sql外键错误

mke*_*kin 1 sql foreign-keys sql-server-2008

我想创建这两个表,但我收到一个错误,说明由HOLD的外键引用的SECTION键不是主键.正如在查询中看到的那样,它们是主键.我怎么解决这个问题?

create table SECTION( 
ID integer foreign key references TERM(ID),
CID integer foreign key references COURSE(CID),
SECT integer,
constraint PK_SECTION primary key (ID,CID,SECT),
);

create table HOLD( 
NAME varchar(30) foreign key references INSTRUCTOR(NAME),
ID integer foreign key references SECTION(ID),
CID integer foreign key references SECTION(CID),
SECT integer foreign key references SECTION(SECT),
constraint PK_HOLD primary key (NAME,ID,CID,SECT),
);
Run Code Online (Sandbox Code Playgroud)

dav*_*ago 5

ID,CID,SECT不是主键,它们一起是一个主键(多个属性).你必须像这样引用它们:

CONSTRAINT "HOLD_FK01" FOREIGN KEY ("ID", "CID", "SECT")
      REFERENCES "SECTION" ("ID", "CID", "SECT")
Run Code Online (Sandbox Code Playgroud)