首页 >数据库 >mysql教程 >MySQL删除父记录而不删除父记录时如何删除子记录?

MySQL删除父记录而不删除父记录时如何删除子记录?

Patricia Arquette
Patricia Arquette原创
2025-01-10 12:17:42424浏览

How to Delete Child Records in MySQL When a Parent Record is Deleted (Without Deleting the Parent)

利用 MySQL 的 ON DELETE CASCADE 进行相关数据删除

维护数据完整性通常需要在删除父记录时自动删除关联数据。 MySQL 的 ON DELETE CASCADE 约束提供了此功能。 一个常见的误解是,当删除子记录时,该约束也会删除父记录;这是不正确的。

要实现所需的行为 - 在删除父(类型)记录时删除子(组件)记录而不影响父记录 - 您必须使用 ON DELETE CASCADE 在子表中定义外键关系。 以下针对 components 表说明了这一点:

<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>

此配置可确保从 types 表中删除记录会自动删除 components 表中的所有相应条目,而使 types 表记录保持不变。

重要注意事项:

请记住,外键约束需要使用 InnoDB 存储引擎。 MyISAM 是旧版 MySQL 中的默认引擎,不支持外键。 因此,请确保您的表使用 InnoDB 才能使此功能正常工作。

以上是MySQL删除父记录而不删除父记录时如何删除子记录?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn