外键Oracle

时间:2014-10-23 19:13:35

标签: sql oracle

我正在使用Oracle数据库,我有这个脚本:

create table Guardians (
    noCage number(3),
    nomE varchar2(20),
    CONSTRAINT nc_ne1 PRIMARY KEY(noCage, nomE)
);

create table Animals(
    nomA varchar2(20) PRIMARY KEY,
    type varchar2(15) NOT NULL,
    country varchar2(20) NOT NULL,
    noCage number(3), 
    CONSTRAINT fk_anim_cage0 FOREIGN KEY(noCage) REFERENCES Guardians(noCage)
);

执行脚本时,会创建表监护人,提示错误并且不创建表Animals。我做了一些操作,我认为这与

有关
  

CONSTRAINT nc_ne1 PRIMARY KEY(noCage,nomE)

1 个答案:

答案 0 :(得分:2)

由于Guardians Table具有复合主键,因此您需要在外键中包含这两列。

CONSTRAINT fk_anim_cage0 FOREIGN KEY(noCage,nomA) REFERENCES Guardians(noCage, nomE)

你的动物表就像这样

create table Animals(
    nomA varchar2(20) PRIMARY KEY,
    type varchar2(15) NOT NULL,
    country varchar2(20) NOT NULL,
    noCage number(3), 
    CONSTRAINT fk_anim_cage0 FOREIGN KEY(noCage,nomA) 
            REFERENCES Guardians(noCage, nomE)
);