删除一个分类以后,它的子分类的 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.