Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql ORA-00957尝试使用3个外键引用同一主键时出现重复列名错误_Sql_Oracle - Fatal编程技术网

Sql ORA-00957尝试使用3个外键引用同一主键时出现重复列名错误

Sql ORA-00957尝试使用3个外键引用同一主键时出现重复列名错误,sql,oracle,Sql,Oracle,我在创建表时遇到问题: CREATE TABLE EMPLOYEE ( employee_id NUMBER(5) NOT NULL UNIQUE, position VARCHAR2(100) NOT NULL, name VARCHAR2(255) NOT NULL, salary NUMBER(6) NOT NULL CONSTRAINT employee_pk PRIMARY KEY (employee_id) ); CREATE TABLE PROJECT ( project_id

我在创建表时遇到问题:

CREATE TABLE EMPLOYEE
(
employee_id NUMBER(5) NOT NULL UNIQUE,
position VARCHAR2(100) NOT NULL,
name VARCHAR2(255) NOT NULL,
salary NUMBER(6) NOT NULL

CONSTRAINT employee_pk PRIMARY KEY (employee_id)
);

CREATE TABLE PROJECT
(
project_id NUMBER(5) NOT NULL UNIQUE,
name VARCHAR(100) NOT NULL,
budget NUMBER(6) NOT NULL,
consultant_leader NUMBER(5) NOT NULL,
developer_leader NUMBER(5) NOT NULL,
project_leader NUMBER(5) NOT NULL,

CONSTRAINT project_pk PRIMARY KEY (PROJECT_ID),

CONSTRAINT fk_leader
    FOREIGN KEY (consultant_leader, developer_leader, project_leader)
    REFERENCES EMPLOYEE (employee_id, employee_id, employee_id)
);

在最后一节中,当我尝试引用雇员的表employee_id时,我得到了ORA-00957。我认为这是因为3种不同的领导类型的外键引用了相同的员工id,但据我所知,这应该不是问题。语法错误吗?

您当前的问题是需要三个外键关系,而不是一个有三列的外键关系

但是,不需要将
主键
声明为
唯一
。因此,我建议:

CREATE TABLE EMPLOYEE (
    employee_id NUMBER(5) NOT NULL PRIMARY KEY,
    position VARCHAR2(100) NOT NULL,
    name VARCHAR2(255) NOT NULL,
    salary NUMBER(6) NOT NULL
);

CREATE TABLE PROJECT (
    project_id NUMBER(5) NOT NULL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    budget NUMBER(6) NOT NULL,
    consultant_leader NUMBER(5) NOT NULL,
    developer_leader NUMBER(5) NOT NULL,
    project_leader NUMBER(5) NOT NULL,
    CONSTRAINT fk_leader FOREIGN KEY (consultant_leader)
         REFERENCES EMPLOYEE (employee_id),
    CONSTRAINT fk_leader FOREIGN KEY (developer_leader)
         REFERENCES EMPLOYEE (employee_id),
    CONSTRAINT fk_leader FOREIGN KEY (project_leader)
         REFERENCES EMPLOYEE (employee_id)
);

当然,您不需要将
主键
约束串联起来。单独声明的好处是,您可以根据自己的喜好为约束命名。

我认为您应该创建三个不同的FK:FK_顾问、FK_开发人员、FK_项目负责人

我认为您应该创建三个不同的FK