指向同一父列的两个FK - ON UPDATE CASCADE - SQL Server

时间:2017-07-14 12:19:51

标签: sql sql-server parent-child foreign-key-relationship

这是场景。 - 父表:TEAMMEMBERS,具有主键RecID - 儿童表:TEAMMEMBERTASKS

我在TEAMMEMBERTASKS表中有两列,ReportedBy和AssignedTo。 这两列都使用RecID来存储哪个团队成员报告了任务以及该任务分配给哪个团队成员。两列的RecID可能相同,但情况并非总是如此。

我需要为两个子列添加一个FK来检查与父项的关系,并且我想在两个外键上添加ON UPDATE CASCADE。

每当我尝试这样做时,我的第二个外键会引发一个“循环”或“多个级联路径”。错误。

这是我的代码:

ALTER TABLE [dbo].[TEAMMEMBERTASKS]  WITH CHECK ADD  CONSTRAINT 
[FK_AssignedTo_TeamMemberRecID] FOREIGN KEY([AssignedTo])
REFERENCES [dbo].[TEAMMEMBERS] ([RecID])
GO

ALTER TABLE [dbo].[TEAMMEMBERTASKS] CHECK CONSTRAINT 
[FK_AssignedTo_TeamMemberRecID]  
GO

ALTER TABLE [dbo].[TEAMMEMBERTASKS]  WITH CHECK ADD  CONSTRAINT 
[FK_ReportedBy_TeamMemberRecID] FOREIGN KEY([ReportedBy])
REFERENCES [dbo].[TEAMMEMBERS] ([RecID])
ON UPDATE CASCADE
GO

ALTER TABLE [dbo].[TEAMMEMBERTASKS] CHECK CONSTRAINT 
[FK_ReportedBy_TeamMemberRecID]
GO

使用当前代码,这会导致在两个子列中更新RecID还是会导致更新命令被限制?

我应该继续编写一个处理此问题的触发器吗?

0 个答案:

没有答案