如何创建引用复合主键中一列的外键

Vam*_*msi 3 sql-server sql-server-2008 composite-primary-key

我有两个表Catalog和CatalogIndex

目录包含以下列

DN
PID
PURL
Desc
Run Code Online (Sandbox Code Playgroud)

其中两列DN,PID是此表的复合主键的一部分.

CatalogIndex具有以下列

PID
PItem
PVal
Run Code Online (Sandbox Code Playgroud)

PID和PItem是CatalogIndex表的复合主键的一部分.

我想在PID列上添加一个foriegn键到CatalogIndex,它引用了Catalog表中的PID.

我正在使用SQL Server 2008

谢谢

mar*_*c_s 7

不能只引用复合主键的一部分(复合PK的许多缺点之一 - 引用它们会非常混乱).

你需要引用密钥,整个密钥以及除密钥之外的任何东西(所以帮助你Codd :-)).

唯一的另一种选择是UNIQUE INDEX在您希望引用的那些列上创建一个新的(如果它们确实是唯一的),然后使用该唯一索引来引用该列的子集.