s。可以在同一个表中执行子记录的Delete Cascade
。我发现this post in the MYSQL forums有答案。这是我如何运作的。
- 我不得不确保主ID的父母被设置为NULL。
- 我不得不确保主ID和父ID被设置为完全相同的字段类型,如INT。
- 我还必须确保主ID设置为自动增量。
从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.
这是巨大的我的项目,一个画廊,用户可以在相册内的相册内创建相册。
或4.通过添加另一个表从父记录中分离出子记录。 – 2011-05-04 15:32:30
4在我的情况下不是一个选项。你的第二个建议对我最有效。不知道你可以为同一张桌子做。谢谢! – IgalSt 2011-05-04 15:52:44