错误:无效标识符00904. 00000 - “%s:外键约束的无效标识符

时间:2015-12-29 22:06:43

标签: database oracle constraints

有谁知道为什么SQL开发人员中的两个表产生错误:

Error report - SQL Error: ORA-00904: "CLIENT_ID": invalid identifier 00904. 00000 - "%s: invalid identifier".

我知道这是关于外键的约束,但不知道原因:

CREATE TABLE person

( person_id NUMBER(4) not null,

person_name VARCHAR(50),

person_surname VARCHAR(50),

person_contact_number NUMBER(11),

person_address VARCHAR2(50),

person_postcode VARCHAR2(50),

fk_boss_id NUMBER(4),

CONSTRAINT person_id_pk PRIMARY KEY (person_id),

CONSTRAINT boss_id FOREIGN KEY (boss_id) REFERENCES boss (boss_id)
);



CREATE TABLE boss

( boss_id NUMBER(4) not null,

boss_name VARCHAR(50),

fk_person_id NUMBER(4),

CONSTRAINT boss_pk PRIMARY KEY (boss_id),

CONSTRAINT person_id FOREIGN KEY (person_id) REFERENCES person (person_id)
);

1 个答案:

答案 0 :(得分:1)

您的外键约束表示列person.boss_idboss.person_id是外键,但两个表都没有该列的列。看起来您已经将FK 列的名称与FK 约束的名称进行了交换。

FOREIGN KEY声明的CONSTRAINT子句必须在声明表中引用 列。例如,在表boss中,您将拥有

...
person_id NUMBER(4),
...
CONSTRAINT fk_person_id FOREIGN KEY (person_id) REFERENCES person (person_id)
...

(另外,如果您的错误消息开始ORA,那么您使用的是Oracle,而不是MySQL,如果它引用了一个名为CLIENT_ID的列,那么它就会抱怨第三个表既不是你发布的那些。)