ORA-00904:" BRANCH_ID":无效的标识符

时间:2016-01-02 20:15:20

标签: sql oracle

为什么创建表不允许我添加人员表,CONSTRAINT对我来说似乎合乎逻辑。

CREATE TABLE branch 
(
Branch_ID  VARCHAR(2),
Branch_Name  VARCHAR(20),
Branch_Address  VARCHAR(40),
Branch_Postcode  VARCHAR(15),
Branch_Telephone NUMBER(15),
Branch_email VARCHAR(40),
Branch_Fax NUMBER(15),
PRIMARY KEY ( Branch_ID )
);

CREATE TABLE staff
(
    Staff_ID INT NOT NULL PRIMARY KEY,
    firstName VARCHAR(20),
    lastName VARCHAR(20),
    addressLine_1 VARCHAR2(30),
    city VARCHAR2(15),
    postcode VARCHAR2(7),
    telephone VARCHAR2(15),
    salary DECIMAL (19,4),
    CONSTRAINT BRANCH_fk FOREIGN KEY(Branch_ID ) REFERENCES branch(Branch_ID )
);

ORA-00904:" BRANCH_ID":无效标识符

1 个答案:

答案 0 :(得分:4)

我想您忘了添加Branch_ID字段。 你在Staff表中引用这个作为你的外键,但是你还没有在你的staff表中定义它。

将员工表定义更改为:

CREATE TABLE staff
(
    Staff_ID INT NOT NULL PRIMARY KEY,
    firstName VARCHAR(20),
    lastName VARCHAR(20),
    addressLine_1 VARCHAR2(30),
    city VARCHAR2(15),
    postcode VARCHAR2(7),
    telephone VARCHAR2(15),
    salary DECIMAL (19,4),
    Branch_ID VARCHAR2(2),
    CONSTRAINT BRANCH_fk FOREIGN KEY(Branch_ID) REFERENCES branch(Branch_ID)
);

关于Gordon Linoff的评论,请查看以下链接。我修改了我的答案以匹配“最佳实践”。

Difference VARCHAR and VARCHAR2