将两个外键链接到一个主键

时间:2018-11-10 21:47:37

标签: sql sql-server

我有两个表,一个摄影师表和一个影响表。在“影响”表中,一个摄影师可以影响其他摄影师。

关系模式:

这是我的SQL图:

实例示例:

我的问题是,当我尝试删除摄影师Tom时,由于他影响了Jason(如Impacts表中所示),我得到一个错误提示:

  

DELETE语句与REFERENCE约束“ FK_Influences_Photographer1”冲突。冲突发生在数据库“ jma59”的表“ dbo.Influences”中

如果Tom在Impacts表的EPName列中,则删除它没有问题。我知道这是一个外键问题,但是我不确定如何处理这种情况。我创建了两个单独的外键,这些外键引用了摄影师的主键。但是问题是我无法做到这两个外键都在更新和删除时级联。

第一个外键是引用摄影师的PName和PBDate的EPName和EPBDate

第二个外键是RPName和RPBDate,也指摄影师的PName和PBDate。

错误是:

  

无法创建关系'FK_Influences_Photographer1'。在表“ Influences”上引入FOREIGN KEY约束“ FK_Influences_Photographer1”可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。

任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:0)

您可以考虑使用触发器而不是级联删除来实现参照完整性:https://support.microsoft.com/en-gb/help/321843/error-message-1785-occurs-when-you-create-a-foreign-key-constraint-tha