mySQL限制级联无操作设置
在用户留下评论的论坛表上使用的最佳约束是什么 假设某些用户将在稍后阶段被删除。如果我删除了一个已发表评论的用户,那么表中的users条目会发生什么变化mySQL限制级联无操作设置,mysql,cascade,restrict,Mysql,Cascade,Restrict,在用户留下评论的论坛表上使用的最佳约束是什么 假设某些用户将在稍后阶段被删除。如果我删除了一个已发表评论的用户,那么表中的users条目会发生什么变化 希望有人能解释一下。这个问题有两个部分: 如何最好地实现这一点?您可以“软删除”用户行。这具有以下优点: 不丢失用户信息 允许取消删除用户 在不丢失链接到用户的数据的情况下维护引用完整性 软删除可以通过向users表中添加另一列来实现,其中包含dateDeleted列——如果该列为Null,则不会删除该用户。我相信这样的机制是可以删除帖子的
希望有人能解释一下。这个问题有两个部分:
- 不丢失用户信息
- 允许取消删除用户
- 在不丢失链接到用户的数据的情况下维护引用完整性
dateDeleted
列——如果该列为Null,则不会删除该用户。我相信这样的机制是可以删除帖子的restrict cascade no action
做什么?说- 限制:拒绝父表的删除或更新操作。 指定限制(或不执行任何操作)与省略ON相同 删除或更新子句
- 无操作:标准SQL中的关键字。在MySQL中,相当于 限制InnoDB拒绝父级的删除或更新操作 表中是否存在相关的外键值。 有些数据库系统有延迟检查,不执行任何操作都是错误的 延期支票。在MySQL中,检查外键约束 立即,因此没有操作与限制相同
换句话说,如果您使用此选项,您将无法删除行,如果这样做会破坏引用完整性。非常感谢。那么,对于您为更新和删除提供的第一个选项,哪一个约束最适合使用?@olad如果您使用
InnoDB
作为存储引擎,外键将自动强制执行。因此,更新时的和删除时的的默认值是可以的,因为您不会(或者至少不应该)更改行的主键。