【发布时间】:2018-12-01 16:47:54
【问题描述】:
在我的 SQL 数据库中,我为 M-to-M 关系创建了以下表格
User
ID username userpass
User_Relationship
ID user1ID, user2ID
所以 user1ID 是用户 ID 的外键,对于 user2ID 也是如此。我想要做的是,当我从 ID 为 1 的用户中删除一行时,我还想从 User_Relationship 中删除 user1ID 或 user2ID 为 1 的行,但仅此而已,而不是任何其他行。我已经尝试将 ON CASCADE DELETE 设置为 User_Relationship 表中的两个外键,但收到以下错误:
Introducing FOREIGN KEY constraint on table 'User_Relationship' may cause
cycles or multiple cascade paths
那么,如何从 User 表中删除一个值并删除 User_Relationship 中 user1ID 或 user2ID 的外键设置为用户 ID 的每一行?我正在使用 SQL 管理工作室。谢谢。
【问题讨论】:
-
一种方法是使用触发器,但我不确定是否有更好的选择。
-
好吧,我做了一个触发器,它起作用了。不是直接的方式,但它仍然可以完成工作。谢谢。
-
触发器是最好的方法。您可以根据需要对其进行自定义,并且它仍然像级联删除一样被数据库触发。
-
我个人讨厌触发器并尽可能避免它们。外键级联也是如此。我将明确执行删除
User_Relationship中记录的查询。或者创建一个存储过程。 -
@BartHofland 你讨厌触发器但使用存储过程?有趣!
标签: sql-server tsql cascading-deletes