gpt4 book ai didi

mysql - 具有 null 的父级不会在自引用表中删除

转载 作者:行者123 更新时间:2023-11-30 01:16:07 25 4
gpt4 key购买 nike

我有树型自引用表。我想使用根元素 id 删除所有子记录。所以我添加了带有级联删除的自引用约束。当父级有一些引用 id 的值时它会起作用。但我输入了 null 的根元素,所以它没有被删除。任何想法。当我们删除 TreeView 中的根时,如何删除所有子记录。

创建表查询

CREATE TABLE IF NOT EXISTS `_quiz` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`value` varchar(100) DEFAULT NULL,
`type` varchar(20) NOT NULL,
`parent` int(11) DEFAULT NULL,
`created` datetime NOT NULL,
`updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `parent` (`parent`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


ALTER TABLE `_quiz`
ADD CONSTRAINT `_quiz_ibfk_2` FOREIGN KEY (`parent`) REFERENCES `_quiz` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

我的数据表

enter image description here enter image description here

红色突出显示的是根。当我们删除时,所有子项都需要删除。但这并没有发生!

还有其他办法吗?

最佳答案

第一行已经打破了约束,因为它没有父行。如果语句破坏了约束,则处理将立即停止。

这就是为什么如果您尝试删除第一个,则不会有任何删除。即使第一行本身也不会被删除。

避免引用字段中出现空值。您可以将其设置为引用自身。我不知道它是否会导致任何其他问题,但它可以解决这个问题。 ;)

关于mysql - 具有 null 的父级不会在自引用表中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19039103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com