Как обновить строку с триггером AFTER INSERT MySQL? - PullRequest
0 голосов
/ 10 января 2019

У меня есть таблица «ветви», отражающая иерархическую структуру. Я бы хотел, чтобы поле автоматически присваивало значение полю 'путь' после вставки новой строки. Значение должно быть сформировано следующим образом: выберите путь к строке, где 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
...