gpt4 book ai didi

sql-server - 在具有两个 FK 的表上级联删除同一个表

转载 作者:行者123 更新时间:2023-12-03 02:33:41 24 4
gpt4 key购买 nike

我有一个名为 Friends 的关系包含以下列,

User1ID   
User2ID
Since

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

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

最佳答案

您不能有多个或循环级联路径:它会导致您想要执行的操作变得不明确(比如一个 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

关于sql-server - 在具有两个 FK 的表上级联删除同一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8287023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com