MySQL:级联与限制

标签 mysql cascade

我正在处理数据库并使用许多外键来连接我的表。默认情况下,MySQL 将所有 ON UPDATEON DELETE 设置为 RESTRICT。这似乎工作正常。

然后有一次,我想更改表中几行的 id。此表涉及许多关系,因此我将关系更改为 CASCADE,以便将更改级联到使用该 id 作为外键的表。

现在我想,是否有任何理由将关系保留为 RESTRICT,因为 CASCADE 似乎让我的生活更轻松?

最佳答案

有时您确实希望在代码中实现所有关系逻辑。您使用 RESTRICT 只是为了控制自己 - 以便在您忘记某些情况时查看错误。

另外请记住,CASCADE 操作有时非常出乎意料,对于庞大的代码库,您应该始终牢记这一点。因此,根本不使用它们可能是一个很好的解决方案 - 有助于组织应用程序的设计,顺便说一句。

另一种方法 - 有时您确实有循环关系(例如非规范化)并且 CASCADE 无法使用。

关于MySQL:级联与限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27750284/

相关文章:

Postgresql 9.4 级联复制故障转移

hibernate - 在 ManyToOne 关系中使用 Cascade

mysql - 在mysql中选择部分表列数据

c++ - 如何将 QVariant 转换为自定义类?

java - Hibernate:将父实体映射到子实体,并有 2 个对子实体中一列的引用?

mysql - 如何更改Docker Mysql容器连接端口?

mysql - MariaDB/MySQL 外键约束 : possible to request cascade at time of delete?

mysql - 合并在空表的插入语句中不起作用

mysql - 使用当前值和先前值的 SQL 循环

python - sqlalchemy 查询持续时间日志记录