【发布时间】:2014-06-26 07:51:54
【问题描述】:
这是我的桌子:
CREATE TABLE `pages` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parent` int(11) DEFAULT NULL,
`label` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
其中 id 是一个唯一的 id(自动增量),而 parent 也是同一个表中的一个 id。如果 parent 为 NULL,则页面没有父级。
我想要什么?如果我删除一个父级,它应该会自动删除同一张表中的所有子级。 我相信这可以使用 DELETE CASCADE 来完成,这就是我想要的方式:)。 但是我尝试了许多代码配置,但都没有工作。无法创建表,或者插入查询不起作用,因为出现类似于“键不存在”的错误。
我发现了什么?
How to recursively delete items from table? - 答案很好,但没有代码。这个回答同样的问题: https://stackoverflow.com/a/9260373/1125465 对我不起作用。表创建存在一些问题。我想这个答案是匆忙做出的,并且缺少一些关键词?
Recursive MySQL Query with relational innoDB这个是类似的,但不一样,表少。
Sql server - recursive delete - 来吧,一定有最简单的答案...
技术信息:
- mysql Ver 14.14 Distrib 5.1.70,用于 pc-linux-gnu (x86_64) 使用 阅读第 5.1 行
- 表引擎:InnoDB
【问题讨论】:
-
MySQL 没有简单的答案,因为它缺少递归查询(或可延迟的约束)
标签: mysql recursion hierarchical-data cascade