级联删除和更新的优点和缺点是什么?

Vis*_*hal 7 cascade sql-server-2008 cascading-deletes

也许这是一个天真的问题...但我认为我们应该总是有级联删除和更新.但我想知道它是否有问题,何时不应该这样做?我现在真的想不到一个你不想进行级联删除的情况,但我确信有一个......但更新应该如何进行呢?

那么任何人都可以列出级联删除和更新的优缺点吗?谢谢.

SQL*_*ace 10

优点:

  • 从Parent表中删除行时,将删除所有外键行
  • 这通常比使用触发器实现它更快
  • 孤儿行不太可能

缺点

  • 孤儿是可能的
  • 如果你错误地删除了父表中的一行,那么相应子表中的所有行都将被删除,并且PITA会找出你删除的内容


Fra*_*ank 8

这取决于表中包含的实体:如果没有主键的一侧,外键的一侧不能存在,则进行级联删除是有意义的.

E. g.:如果发票被删除,发票行项目无权生存.

但是,如果你有一个外键用于关系"为......工作"的员工和他/她的老板之间的关系,你是否想要在老板离开公司时删除该员工?

此外:技术问题是,如果依赖表条目发生更改而某些ORM(对象关系映射)工具发生变化,而不对其负责.

  • @SQLMenace 你会把所有前雇员永远保留在雇员表中吗?但我希望您明白这一点:在某些情况下,即使父级被删除,子级也可以单独存在。 (2认同)