我正在处理数据库并使用许多外键来连接我的表。默认情况下,MySQL 将所有 ON UPDATE
和 ON DELETE
设置为 RESTRICT
。这似乎工作正常。
然后有一次,我想更改表中几行的 id
。此表涉及许多关系,因此我将关系更改为 CASCADE
,以便将更改级联到使用该 id
作为外键的表。
现在我想,是否有任何理由将关系保留为 RESTRICT
,因为 CASCADE
似乎让我的生活更轻松?
最佳答案
有时您确实希望在代码中实现所有关系逻辑。您使用 RESTRICT
只是为了控制自己 - 以便在您忘记某些情况时查看错误。
另外请记住,CASCADE
操作有时非常出乎意料,对于庞大的代码库,您应该始终牢记这一点。因此,根本不使用它们可能是一个很好的解决方案 - 有助于组织应用程序的设计,顺便说一句。
另一种方法 - 有时您确实有循环关系(例如非规范化)并且 CASCADE
无法使用。
关于MySQL:级联与限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27750284/