复合主键中的外键

Mar*_*cus 1 sql sql-server constraints foreign-keys primary-key

我有以下3个表格:

TBLA

ID - PK
name
Run Code Online (Sandbox Code Playgroud)

TBLB

ID - PK
tblAID - FK references tblA.ID
pkID2
Run Code Online (Sandbox Code Playgroud)

TBLC

ID - PK
tblAID *
fkID2 *
...
Run Code Online (Sandbox Code Playgroud)

我想让这个元组成为FK的 (tblB.tblAID, tblB.pkID2)

如果我这样做:

alter table tblC with check 
add constraint FK_tblC_tblB 
foreign key (tblAID, fkID2) 
references tblB (tblAID, pkID2)
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息:

引用表'tblB'中没有与外键'FK_tblC_tblB'中的引用列列表匹配的主键或候选键

即:我想确保插入的元组对tblC存在tblB.但我不能这样做,因为pkID2它不是关键.真的tblB可以tblAID, pkID2作为复合主键.但那时tblAID仍然必须是FK tblA.ID.

小智 5

实际上tblB可以将tblAID,pkID2作为复合主键.

或者从这两个字段创建一个新的唯一键.外键不需要引用主键.

但是tblAID仍然必须是tblA.ID的FK.

这仍然有效.主键或唯一键中的列也可以参与其他约束,包括外键约束.