SQL - 外键错误

Posted

技术标签:

【中文标题】SQL - 外键错误【英文标题】:SQL - foreign key error 【发布时间】:2013-11-14 15:35:02 【问题描述】:

当我尝试添加外键时出现此错误:

“ORA-00904:“BR_ID”:无效标识符”

create table Branch9
(br_id number NOT NULL,br_name varchar2(25) NOT NULL ,br_address varchar2(30),PRIMARY KEY(br_id))

create table Employee9
(emp_id number NOT NULL,emp_name varchar2(25) NOT NULL UNIQUE,emp_address varchar2(30),emp_age number,emp_dob date,emp_salary number,PRIMARY KEY(emp_id))

ALTER TABLE Employee9
ADD FOREIGN KEY (br_id) REFERENCES Branch9 (br_id);

是否与添加到 br_id 的 NOT NULL 约束相关?

【问题讨论】:

Branch9(br_id) 上的非空约束是多余的,因为它是主键,在 oracle 中不能为空。 【参考方案1】:

br_id 必须是 Employee9 中的一列。

【讨论】:

【参考方案2】:

br_id 必须在Employee9 表中:

这是你添加它的方式:

ALTER TABLE Employee9 ADD br_id number NOT NULL;

那么你可以这样做:

ALTER TABLE Employee9 
    ADD CONSTRAINT fk_br_id FOREIGN KEY (br_id) REFERENCES Branch9 (br_id);

【讨论】:

【参考方案3】:

Employee9 中没有 br_id 列,是吗?:

create table Employee9 (
    emp_id number NOT NULL,
    emp_name varchar2(25) NOT NULL UNIQUE,
    emp_address varchar2(30),
    emp_age number,
    emp_dob date,
    emp_salary number,
    PRIMARY KEY(emp_id)
)

【讨论】:

以上是关于SQL - 外键错误的主要内容,如果未能解决你的问题,请参考以下文章

在服务器执行 SQL 脚本错误:错误 1215:无法添加外键约束

创建带有外键错误号的 sql 表:150

sql 目录类别索引外键错误

sql developer "%s: invalid identifier",外键错误

SQL Server外键约束错误[重复]

(错误)SQL 代码 -530,错误外键 PAY$ID$U 的插入或更新值无效