【问题标题】:SQL - foreign key errorSQL - 外键错误
【发布时间】:2023-03-27 20:08:01
【问题描述】:

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

“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 中不能为空。

标签: sql oracle foreign-keys


【解决方案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)
      )
      

      【讨论】:

        猜你喜欢
        • 2014-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-22
        • 2015-04-03
        • 1970-01-01
        • 1970-01-01
        • 2011-07-17
        相关资源
        最近更新 更多