首页 > 一般建表中ON DELETE CASCADE这样的语句常用吗?

一般建表中ON DELETE CASCADE这样的语句常用吗?

在建表语句中的on delete cascade常用吗?还是通过程序逻辑控制比较常见?


基本没有用过,主要原因是数据库设计的时候业务数据一般不会真正删除,只是打一个删除标记,这样即使有误操作也可以方便的更新回来。

个人认为使用ON DELETE CASCADE的风险会比较大,如果有多个级联删除的时候会更明显,而且给人的感觉是数据库在后台自动操作了,而且还是删除数据,不是做这个数据库设计的人很难知道这些关联关系,可能会无意中造成关联数据的删除,所以不建议使用。


  1. 如果B仅关联到A,删A时自动删除关联的B可以少写代码;
  2. 如果B不仅关联到A,也可能关联到C,这种情况下,还是逻辑控制比较灵活
  3. 关联对象的自动删除/更新,总是需要在你从数据库取出的对象图谱里进行遍历做数据变化的比较来生成sql,如果对象已经多到影响性能,则也建议用逻辑控制,所谓显式标记更新状态

在我们的实践里,采用逻辑控制的情况更多。

【热门文章】
【热门文章】