0
A
回答
1
有两个部分对这个问题:
如何最好地实现这一点?您可以“软删除”用户行。这样做的优点是:
- 没有丢失用户信息
- 使用户能未删除
- 保持参照完整性,而不会丢失连接到用户
软删除可以实现数据通过在用户表中添加另一列,使用
dateDeleted
列 - 如果它为空,则不删除该用户。我相信SO使用这种机制来删除帖子。restrict cascade no action
是做什么用的?该MySQL docs说
RESTRICT:拒绝对父表的删除或更新操作。 指定RESTRICT(或NO ACTION)与删除ON或DELETE子句的ON 相同。
无动作:来自标准SQL的关键字。在MySQL中,相当于 RESTRICT。如果引用表中存在相关外键值,InnoDB将拒绝父表 表的删除或更新操作。 某些数据库系统具有延期检查,NO ACTION是延期检查。在MySQL中,外键约束立即被检查 ,所以NO ACTION与RESTRICT相同。
换句话说,如果你使用这个,你就不能删除行,如果这样做会破坏参照完整性。
相关问题
- 1. 在结果中设置限制(无mysql)
- 2. 无法在MySQL中设置FK限制
- 3. MySQL - 无限制启动
- 4. 手动设置gtk的限制。设置
- 5. 如何在MySQL工作台中设置级联删除?
- 6. 设置无限滚动
- 7. 关于[删除(级联/限制)]和更新(级联/限制)的后续处理
- 8. MySQL查询:限制联接
- 9. mysql联盟限制问题
- 10. 无限动画制作
- 11. 设置单个属性时无法设置级联属性正常工作
- 12. ActiveRecord是否可以设置为自动限制二度关联?
- 13. MySql:设置重复列的限制
- 14. 设置最大行INSERT限制MySQL
- 15. PHP设置小时限制Mysql
- 16. 无法对MySQL用户设置权限
- 17. Symfony定制配置级联
- 18. MySQL int()无限制
- 19. MySQL的联盟和优先级限制为一个SELECT
- 20. mysql如何确定要删除的内容?级联,限制?
- 21. 如何制作MySQL无限数组表?
- 22. SQL限制加入/级联结果
- 23. EF 5.0查找表设计限制级联删除
- 24. Mysql级联
- 25. 无法设置限制与coord_trans
- 26. 无法设置限制的JTextField
- 27. Elasticsearch设置限制
- 28. 设置OpenFileDialog限制
- 29. 无法设置无限的内存限制
- 30. MySQL - 级联更新工作,但级联删除不
非常感谢。那么哪个约束最适合用于ON UPDATE和ON DELETE的第一个选项? – JamesBondInBlack 2012-04-05 18:53:09
@olad如果您使用'InnoDB'作为您的存储引擎,则外键将自动执行。所以'ON UPDATE'和'ON DELETE'的默认值是好的,因为你不会(或者至少不应该)改变行的主键。 – 2012-04-05 19:21:37