У меня есть таблица «ветви», отражающая иерархическую структуру. Я бы хотел, чтобы поле автоматически присваивало значение полю 'путь' после вставки новой строки.
Значение должно быть сформировано следующим образом:
выберите путь к строке, где id = parent_branch_id новой вставленной строки. Например - для основного пути ветвления должно быть '/ 0 /', а для sub-branch1 - '/ 0 // 1 /', '/ 0 // 1 // 2 /' и т. Д.
Как реализовать это с помощью триггера AFTER INSERT MySQL?
+----+----------------+---------+------+------------------+
| id | name | address | path | parent_branch_id |
+----+----------------+---------+------+------------------+
| 1 | main branch | addres1 | NULL | NULL |
| 2 | sub-branch1 | addres2 | NULL | 1 |
| 3 | sub-sub-branch | addres3 | NULL | 2 |
+----+----------------+---------+------+------------------+
Я пробовал это,
DELIMITER //
CREATE TRIGGER BRANCHES_AFTER_INSERT AFTER INSERT ON branches
FOR EACH ROW
BEGIN
DECLARE vPath varchar(255);
DECLARE
SET @vPath :=(select path from branches where id = NEW.parent_branch_id);
UPDATE branches SET path := @vPath + '/' + NEW.id + '/' ;
END;
//
DELIMITER ;
но я получил:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near 'SET @vPath :=(select path from center where id = NEW.parent_center_id);
UPDATE' at line 6