在用户发表评论的论坛表格上使用的最佳约束是什么?
假设某些用户将在稍后阶段删除。如果我删除已注释的用户,表中的用户条目会发生什么?
希望有人能解释。
答案 0 :(得分:1)
这个问题分为两部分:
如何最好地实现这个?您可以“软删除”用户行。这有以下优点:
可以通过向users表添加另一列并使用dateDeleted
列来实现软删除 - 如果它是Null,则不会删除用户。我相信SO使用这种机制来删除帖子。
restrict cascade no action
做了什么? MySQL docs说
RESTRICT:拒绝父表的删除或更新操作。 指定RESTRICT(或NO ACTION)与省略ON相同 DELETE或ON UPDATE子句。
NO ACTION:标准SQL中的关键字。在MySQL中,相当于 限制。 InnoDB拒绝父进程的删除或更新操作 表,如果引用的表中有相关的外键值。 有些数据库系统有延迟检查,NO ACTION是 延期检查。在MySQL中,检查外键约束 立即,所以NO ACTION与RESTRICT相同。
换句话说,如果你使用它,你将无法删除行,如果这样做会破坏参照完整性。