MySQL 的“ON DELETE CASCADE”:维护引用完整性
数据库设计经常涉及建立表之间的关系。 MySQL 的 ON DELETE CASCADE
约束为自动管理相关数据删除提供了强大的解决方案。这通过跨链接表同步删除来确保数据完整性。
解决引用完整性挑战
考虑一个常见的场景:组件及其类型之间的多对一关系。 目标是在删除特定类型时自动删除与该类型关联的所有组件。 然而,当删除组件时,经常会出现类型意外删除的担忧。
正确的实施
关键是components
表上外键约束的精确定义。 下面是优化后的 SQL 代码:
<code class="language-sql">CREATE TABLE `components` ( `id` int(10) unsigned NOT NULL auto_increment, `typeId` int(10) unsigned NOT NULL, `moreInfo` VARCHAR(32), -- etc PRIMARY KEY (`id`), KEY `type` (`typeId`) CONSTRAINT `myForeignKey` FOREIGN KEY (`typeId`) REFERENCES `types` (`id`) ON DELETE CASCADE ON UPDATE CASCADE )</code>
详细说明
外键定义: FOREIGN KEY
子句将 typeId
表中的 components
列链接到 id
表中的 types
列。
ON DELETE CASCADE
操作: 这个关键部分规定从 types
表中删除一行将自动触发删除 components
表中 typeId
匹配的所有相应行。 🎜>
操作:ON UPDATE CASCADE
这可确保如果 表中的 id
更新,types
表中相应的 typeId
也会更新。components
InnoDB 引擎要求: 外键约束需要 InnoDB 存储引擎。 MyISAM,较旧的默认设置,缺乏此功能。
以上是MySQL中的'ON DELETE CASCADE”在删除相关行时如何确保数据完整性?的详细内容。更多信息请关注PHP中文网其他相关文章!