菜单

无限多级分类删除父id后子parent_id自动更新

2010年11月18日 - mysql

删除一个分类以后,它的子分类的 parent_id 号就需要改变一下,而不能继续指向这个不存在的分类,因此我希望删除这个分类以后,它的子分类的父分类变为它的父分类。

lock tables `categories` write, `categories` as `c1` write,   `categories` as `c2` write;

update `categories` as `c1`, `categories` as `c2` set `c1`.`parent_id` = `c2`.`parent_id` where `c1`.`parent_id` = `c2`.`cat_id` and `c2`.`cat_id` = $cat_id;

delete from `categories` where `cat_id` = $cat_id;

unlock tables;

这里需要注意的一点是,锁定表的时候,一定要把要操作的表和Mysql表别名都锁定,否则下面的语句会出错.

demo

c1 (new)
uid     parent_id
1         0
2        1
3        2
4        3
res
1        0
3        1
4        3
c2 (old)
uid    parent_id
1        0
2        1
3        2
4        3
where条件查询结果c1为 3   2,c2为2  1,set之后结果就是res里的3  1.

发表评论

电子邮件地址不会被公开。 必填项已用*标注