创建关系到非主柱(Creating relationship to non-primary colu

2019-09-27 23:56发布

我有引用外键,它的主要表的一个表格。 但我想一个其他引用到另一个表。

举例来说,假设我有三个表: Child, Parent, Transaction

父表:

  • PARENTID

子表:

  • childID的
  • PARENTID

交易表:

  • 的TransactionID
  • PARENTID(引用ParentID on Parent表, 可为空
  • childID的(引用ChildID on Child表, 可为空

我想补充一个cascade on update参照ParentID on Child表。 所以,当这样一种关系,亲子改变那么我ParentIDTransaction表将自动更新。

Answer 1:

显然, ParentID不上主键Child表。

这是列在整个表的独特之处?

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

  • 如果 :如果ParentIDChild不是唯一的,那么你就无法创建FK引用。 在一个FK参考的“目标”必须是该表的主键,或至少在该表上的唯一的列。 否则,该行正是你指的是,如果你有ParentID = 42和值是不是唯一的?!?!?

简单地说,我想在我的PARENTID&childID的列相同的值对上的事务表作为子表上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


文章来源: Creating relationship to non-primary column