如何在Oracle中创建外键

时间:2017-03-30 11:00:11

标签: oracle oracle11g

如何将MgrId中的ManagerProjectEmpId表格中的Employee相关联? 这是我试过的wat:

CREATE TABLE Employee(EmpId varchar2(5), 
                       EmpName varchar2(25), 
                       DeptId varchar2(3),
                       Salary Number(8),
Constraint PK_addn primary key (EmpId, DeptId),
Constraint fk_Department foreign key (DeptId) references Department (DeptId));

但第二个表未能创建:

CREATE TABLE ManagerProject(ProjId varchar2(4),
                            MgrId varchar2(5),
                            StartDate Date,
                            EndDate Date,
Constraint fk_managerproject foreign key (MgrId) references Employee (EmpId),
Constraint PK_Managerproject Primary key(ProjId, MgrId, StartDate));

显示

  

ORA-02270:此列列表没有匹配的唯一键或主键

1 个答案:

答案 0 :(得分:0)

错误消息表明您正在尝试创建引用没有唯一键或主键约束的列的FK。

假设您不想将DeptId列添加到ManagerProject,则需要在employee上添加唯一键:

alter table Employee add constraint empId_UK unique ( empId)

但这很大程度上取决于你的架构应该是什么。

如果您要将DeptId列添加到ManagerProject,则需要在引用EmpId时修改您的FK以使用DeptIdemployee