1

我有一个表,它引用了主表的外键。但我想向另一个表添加另一个引用。

例如,假设我有三个表:Child, Parent, Transaction

父表:

  • 父母ID

子表:

  • 孩子ID
  • 父母ID

交易表:

  • 交易ID
  • ParentID(引用ParentID on Parent表,可为
  • ChildID(引用ChildID on Child表,可为

我想添加对表的cascade on update引用。ParentID on Child这样当父子关系发生变化时,我ParentIDTransaction桌子上的就会自动更新。

4

1 回答 1

3

很明显,ParentID主键不是Child表上的。

此列在整个表中是唯一的吗?

  • 如果是:您可以ParentIDChild表上定义唯一索引,然后将 FK 引用添加到该唯一索引

  • 如果NO:如果ParentIDonChild不是唯一的不能创建对它的 FK 引用。FK 引用的“目标”必须是该表的主键,或者至少是该表上的唯一列。否则,如果你有并且值不是唯一的,你指的是哪一行?!?!?ParentID = 42

简单地说,我希望 Transaction 表上的 ParentID&ChildID 列上的值对与 Child 表上的 ParentID&ChildID 列相同

在这种情况下,您需要在两列上都有一个 FK 关系- 像这样创建它:

CREATE UNIQUE INDEX UX_ParentChild
ON dbo.Child(ParentID, ChildID)

ALTER TABLE dbo.Transaction
ADD CONSTRAINT FK_Transaction_Child
FOREIGN KEY(ParentID, ChildID) REFERENCES dbo.Child(ParentID, ChildID)
ON UPDATE CASCADE
于 2012-10-15T12:48:47.193 回答