我是pl / sql的新手,无法在以下脚本中找出问题所在。首先,我执行了以下脚本:

CREATE TABLE Cladiri (
 id_cladire varchar2(5) constraint pk_cladire primary key,
 denumire_cladire varchar2(50),
 numar_cladire number(2),
 adresa varchar2(50),
 cod_postal varchar2(15)
);


成功创建了一个表。接下来,我想用引用id_cladire的外键创建一个新表:

CREATE TABLE Companii (
    id_companie varchar2(5) constraint pk_companie primary key,
    denumire_companie varchar2(50),
    numar_cladire number(4),
    numarul_de_telefon varchar2(20),
    numarul_de_oficii number(4),
    constraint fk_companie_cladire foreign key (id_cladire) references
Cladiri(id_cladire)
);


并且在执行最后一个脚本时收到以下错误:


ORA-00904:“ ID_CLADIRE”:无效的标识符


问题是什么?

最佳答案

您需要将列id_cladire添加到Companii表中:

CREATE TABLE Companii (
    id_companie varchar2(5) constraint pk_companie primary key,
    denumire_companie varchar2(50),
    numar_cladire number(4),
    numarul_de_telefon varchar2(20),
    numarul_de_oficii number(4),
    id_cladire VARCHAR2(5), -- here
    constraint fk_companie_cladire foreign key (id_cladire) references
Cladiri(id_cladire)
);
    -- column + type + constraint


要么:

CREATE TABLE Companii (
    id_companie varchar2(5) constraint pk_companie primary key,
    denumire_companie varchar2(50),
    numar_cladire number(4),
    numarul_de_telefon varchar2(20),
    numarul_de_oficii number(4),
    id_cladire  CONSTRAINT fk_companie_cladire references Cladiri(id_cladire)
    -- column + constraint (type is inferred)
);


DBFiddle Demo

10-07 12:41