Oracle pl/sql ORA-00904无效标识符

And*_*w T 2 oracle plsql

我是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)
);
Run Code Online (Sandbox Code Playgroud)

哪个成功创建了一个表.接下来,我想创建一个带有外键引用的新表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)
);
Run Code Online (Sandbox Code Playgroud)

执行最后一个脚本时出现以下错误:

ORA-00904:"ID_CLADIRE":标识符无效

问题是什么?

Luk*_*zda 5

您需要id_cladireCompanii表中添加列:

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
Run Code Online (Sandbox Code Playgroud)

要么:

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)
);
Run Code Online (Sandbox Code Playgroud)

DBFiddle演示