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

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

Patricia Arquette
发布: 2025-01-10 12:17:42
原创
464 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板