+--------+---------+-----------+-------+
| id | title | parent_id | root |
+--------+---------+-----------+-------+
| 1 | Lvl-1 | 0 | null |
+--------+---------+-----------+-------+
| 2 | Lvl-2 | 0 | null |
+--------+---------+-----------+-------+
| 3 | Lvl-11 | 1 | 1 |
+--------+---------+-----------+-------+
| 4 | Lvl-12 | 1 | 1 |
+--------+---------+-----------+-------+
| 5 | Lvl-121 | 4 | 1 |
+--------+---------+-----------+-------+
这是我的问题,每次mysql插入新行时,我希望root
中的值指向顶级父级(root
中的值实际上与parent_id
中的值有关)。
基于表,id = 5的行,parent_id = 4,id = 4的行的parent_id = 1,id = 1的行
parent = 0.这一行获得root
= 1
基本上root
值来自级联parent_id
到顶级(直到parent_id = 0)
总而言之,我想要的是,当插入新行时,Mysql会自动为root
指定值
这可以吗?
提前致谢
答案 0 :(得分:1)
您可以使用触发器轻松完成此操作:
delimiter //
CREATE TRIGGER update_root BEFORE INSERT ON my_table
FOR EACH ROW
BEGIN
SET NEW.root = (SELECT root FROM my_table WHERE id = NEW.parent_id);
END; //
delimiter ;