这一切都与用户是否被删除有关。
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
.
关于sql - 如何级联/删除这个场景?出现多个级联错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48760016/