我有一个存储父子记录的表。
我试图创建一个触发器,该触发器将在删除父项时删除所有子记录:
Delete From tbl Where ParentId = OLD.Id
虽然我可以成功保存触发器,但删除时出现此错误:
错误 1442:无法更新存储函数/触发器中的表“tbl”,因为它已被调用此函数的语句使用
我究竟做错了什么?
我有一个存储父子记录的表。
我试图创建一个触发器,该触发器将在删除父项时删除所有子记录:
Delete From tbl Where ParentId = OLD.Id
虽然我可以成功保存触发器,但删除时出现此错误:
错误 1442:无法更新存储函数/触发器中的表“tbl”,因为它已被调用此函数的语句使用
我究竟做错了什么?
s。可以在同一个表中做一个Delete Cascade
子记录。我在 MYSQL 论坛上发现这个帖子有答案。这是我如何让它工作的。
来自 MYSQL 论坛:
create table edges(
ID int PRIMARY KEY,
parentid int,
unique key(id, parentid),
foreign key(parentID) references edges(ID) ON DELETE CASCADE ON UPDATE CASCADE
) engine=innodb;
insert into edges(ID,parentID) values (1,null),(2,1),(3,1),(4,2);
现在这样做并观察父级和所有子级删除级联:
delete from edges where id=2;
select * from edges will then show two records left. Record 1 and record 3.
这对我的项目来说是巨大的,一个用户可以在相册内创建相册的画廊。