我有一个名为Friends
的关系,其中包含以下列
User1ID
User2ID
Since
User1ID
和User2ID
是关系中的一组主键。它们也是引用表Users的外键。现在我想添加一个ON CASCADE DELETE
,这样当表User的用户被删除时,表Friends
中的相应行也会被删除。但是,MS SQL Server不允许我添加该约束。
有关如何修改表格的任何想法,以完成该任务?
答案 0 :(得分:6)
你不能有多个或循环的级联路径:你想要做的事情变得模棱两可(比如一个CASCADE NULL和另一个CASCADE DELETE)
我使用存储过程首先从Friends
中删除Users
然后从BEGIN TRAN
DELETE Friends WHERE User1ID = @UserID;
DELETE Friends WHERE User2ID = @UserID;
DELETE Users WHERE UserID = @UserID;
COMMIT TRAN
删除(当然是在TRY / CATCH中处理错误)
{{1}}