gpt4 book ai didi

sql - 清空自引用 MySQL 表的最佳方法是什么?

转载 作者:IT老高 更新时间:2023-10-28 23:56:30 24 4
gpt4 key购买 nike

我有一个带有递归 parent_id 的自引用 MySQL 表:

CREATE TABLE `recursive` (
`id` int(11) NOT NULL auto_increment,
`parent_id` int(11) default NULL,
`name` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
KEY `data_categorysource_parent_id` (`parent_id`),
CONSTRAINT `parent_id_refs_id_627b4293`
FOREIGN KEY (`parent_id`) REFERENCES `data_categorysource` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

在测试期间,我想清空它但 TRUNCATE 失败:

TRUNCATE `recursive` 
/* SQL Error: Cannot delete or update a parent row: a foreign key
constraint fails...

我目前必须手动删除所有记录,从树的底部开始向上工作。即使是小树,这也会变得繁重。

有没有简单的方法解决这个问题?我不能 DROP 表并在其他表引用它时轻松地重新创建它(我已经截断了这些表,因此那里应该没有数据完整性问题)。

最佳答案

为什么不:

UPDATE 'recursive' SET 'parent_id' = NULL WHERE 'parent_id' IS NOT NULL;
DELETE FROM 'recursive';

?

关于sql - 清空自引用 MySQL 表的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/615797/

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