有谁知道为什么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)
);
答案 0 :(得分:1)
您的外键约束表示列person.boss_id
和boss.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
的列,那么它就会抱怨第三个表既不是你发布的那些。)