在有两个FK的表上的级联删除到同一个表

ppo*_*ani 4 sql-server cascade foreign-keys

我有一个Friends与以下列调用的关系,

User1ID   
User2ID
Since
Run Code Online (Sandbox Code Playgroud)

User1ID并且User2ID是关系中的一组主键.它们也是引用表Users的外键.现在我想添加一个ON CASCADE DELETE,这样当删除表Users中的用户时,也会删除表中相应的行Friends.但是,MS SQL Server不允许我添加该约束.

有关如何修改表格的任何想法,以完成该任务?

gbn*_*gbn 6

你不能有多个或循环的级联路径:你想做什么变得模棱两可(比如一个CASCADE NULL和另一个CASCADE DELETE)

我使用存储过程从Friends事务中的第一个删除然后从Users(在TRY/CATCH当然处理错误)

BEGIN TRAN
   DELETE Friends WHERE User1ID = @UserID;
   DELETE Friends WHERE User2ID = @UserID;
   DELETE Users WHERE UserID = @UserID;
COMMIT TRAN
Run Code Online (Sandbox Code Playgroud)