sql - 如何级联/删除这个场景?出现多个级联错误

标签 sql sql-server database relational-database

请看下图: Diagram

这一切都与用户是否被删除有关。

1.如果一个用户被删除,并且该用户有一个线程。该线程将被删除。
2. 如果用户没有帖子,但有帖子,帖子将被删除。
3. 如果删除某个主题,则该主题上的所有帖子都将被删除。

我尝试级联用户->线程、用户->帖子、线程->帖子。但是,我得到了这个异常:Introducing FOREIGN KEY constraint may cause cycles or multiple cascade paths. Specify on delete no action.

我有点理解这个错误。如果用户被删除,帖子和帖子都会被删除,所以当帖子被删除时,它会尝试级联已经被用户级联过的帖子。 (这样对吗?)

如果上述情况属实,我该如何解决这个问题?

最佳答案

还有一种替代解决方案,当 PK 被删除时,您必须将 FK 设置为 null,如下所示。在关系中有一组 Table Designer Insert and Update specification 的哪个选项在它下面你会发现Delete Rule ,将其设置为 NULL。

这意味着在您的场景中,当在线程表 user_account_id 列值中删除用户时,将值替换为 NULL与帖子表中相同 user_account_id列值替换为 NULL 。当您删除任何线程时,它也会影响帖子表,并且列 user_account_id 值将替换为 NULL .

enter image description here

关于sql - 如何级联/删除这个场景?出现多个级联错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48760016/

相关文章:

database - 添加新数据时发送通知的 Bash 脚本

objective-c - 如何安全且对 Apple 友好地将 iOS 应用程序的数据存储在远程数据库中?

java - 新手指针 rs.next

mysql - 在 MySQL 中组合查询

php - DELETE 查询的 SQL 语法错误

sql - 如何在线创建非聚集索引(如果可用)

sql - 如何在可能包含按字母顺序排列的数字的 varchar 字段上排序?

ASP.NET session 状态性能基准

mysql - 数据库设计: storing hourly analytics for thousands of seperate apps

python - 在 Python/Pandas/PostgreSQL 中将表名作为函数参数传递