0

在用户发表评论的论坛表上使用的最佳约束是什么?

假设一些用户将在稍后阶段被删除。如果我删除了已发表评论的用户,表格中的用户条目会发生什么?

希望有人能解释一下。

4

1 回答 1

1

这个问题有两个部分:

  1. 如何最好地实现这一点?您可以“软删除”用户行。这具有以下优点:

    • 不丢失用户信息
    • 允许取消删除用户
    • 在不丢失与用户相关的数据的情况下保持参照完整性

    软删除可以通过在 users 表中添加另一列来实现dateDeleted——如果它是 Null,则不会删除用户。我相信 SO 使用这种机制来删除帖子。

  2. restrict cascade no action什么?MySQL文档

  • RESTRICT:拒绝对父表的删除或更新操作。指定 RESTRICT(或 NO ACTION)与省略 ON DELETE 或 ON UPDATE 子句相同。

  • NO ACTION:来自标准 SQL 的关键字。在 MySQL 中,相当于 RESTRICT。如果引用的表中有相关​​的外键值,InnoDB 拒绝对父表的删除或更新操作。一些数据库系统有延迟检查,NO ACTION 是延迟检查。在 MySQL 中,立即检查外键约束,因此 NO ACTION 与 RESTRICT 相同。

换句话说,如果你使用它,如果这样做会破坏参照完整性,你将无法删除行。

于 2012-04-05T17:19:34.693 回答