【发布时间】:2014-05-19 21:51:03
【问题描述】:
我有 2 个代表的表
parent -
LibraryItem- Parent -< LibraryItemLink(StdLibraryItemId_Parent)
- Child -< LibraryItemLink(StdLibraryItemId_Child)
我想在 FK 上进行级联删除,以便如果从 LibraryItem 中删除父记录,则所有关联的 LibraryItemLink 记录都将被删除,并且如果任何子 libraryItem 记录被删除,同样适用。
添加约束的 T-SQL 是:
ALTER TABLE dbo.StdLibraryItemLink
ADD
CONSTRAINT FK_StdLibraryItemLink_StdLibraryItem_Child FOREIGN KEY (StdLibraryItemId_Child) REFERENCES dbo.StdLibraryItem (Id) ON DELETE CASCADE,
CONSTRAINT FK_StdLibraryItemLink_StdLibraryItem_Parent FOREIGN KEY (StdLibraryItemId_Parent) REFERENCES dbo.StdLibraryItem (Id) ON DELETE CASCADE
GO
我得到的错误是:
Msg 1785, Level 16, State 0, Line 1
Introducing FOREIGN KEY constraint 'FK_StdLibraryItemLink_StdLibraryItem_Parent' on table
'StdLibraryItemLink' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or
ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
Msg 1750, Level 16, State 0, Line 1
Could not create constraint. See previous errors.
我猜这是关键:
may cause cycles or multiple cascade paths
关于如何对两种关系实施级联删除的建议将不胜感激,因为它在逻辑上似乎是正确的,即父删除和子删除,两者都需要独立删除关联的链接记录。
提前致谢。
【问题讨论】:
标签: sql-server sql-server-2008 sql-server-2008-r2