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

标签 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)
);

成功创建表。接下来,我想用引用 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": invalid identifier

问题是什么?

最佳答案

您需要将列 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

关于Oracle pl/sql ORA-00904 标识符无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50455304/

相关文章:

sql - 有效地选择数据sql

oracle - 创建具有多个页面的 Apex 表单

sql - 甲骨文 ORA-00933 : SQL command not properly ended?

sql - 使用 oracle SQL 按分隔符位置拆分字符串

spring - 使用 Hibernate 和 Oracle 找不到架构

mysql - 使用存储过程解决的具有挑战性的现实示例或情况的示例

Oracle 序列 nextval 和 currval 令人困惑

java - 从java获取plsql过程的值

oracle - 如何在 PL/SQL 中逐行拆分文本?

json - 您推荐哪些用于自动生成 JSON 的 PL/SQL 库?