MySQL 的 ON DELETE CASCADE:在保留类型记录的同时删除组件
MySQL 的 ON DELETE CASCADE
在删除相关记录时提供自动删除相关记录的功能。 但它的应用需要仔细考虑表关系。
考虑一个数据库结构组件,每个组件都链接到一个特定类型。目标:删除与类型关联的所有组件,而不删除类型本身。 这可以实现吗?
方法
实现这一点需要在明确定义的表结构中战略性地使用ON DELETE CASCADE
。 解决办法如下:
<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>
组件表创建:此表保存组件详细信息及其对应的typeId
。
外键实现: 外键约束 (myForeignKey
) 将 components
表的 typeId
列连接到 types
表的 id
列。
ON DELETE CASCADE 规范: 关键元素:ON DELETE CASCADE
。 当types
表中的记录被删除时(假设两个表都使用InnoDB存储引擎),components
表中共享typeId
的所有相关记录都会被自动删除。
关键考虑因素:
InnoDB 是必不可少的。 MyISAM 由于缺乏外键支持,导致这种方法无效。
以上是MySQL的ON DELETE CASCADE可以自动删除组件记录,同时保留类型记录吗?的详细内容。更多信息请关注PHP中文网其他相关文章!