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.
这仍然有效.主键或唯一键中的列也可以参与其他约束,包括外键约束.