Я пытаюсь создать иерархическую структуру семейств, обозначая листовые узлы. У меня есть Trigger
, чтобы отметить family
как лист, но когда я пытаюсь сохранить запись следующая ошибка происходит:Ошибка MySQL # 1442. Как этого избежать
Error Code: 1442. Can't update table 'family' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
Мой триггер:
CREATE TRIGGER MARK_LEAF BEFORE INSERT ON FAMILY FOR EACH ROW
BEGIN
DECLARE V_IS_LEAF CHAR(1);
SELECT IS_LEAF INTO V_IS_LEAF FROM FAMILY WHERE ID = NEW.PARENT_ID;
IF (V_IS_LEAF = 'F') THEN
UPDATE FAMILY SET IS_LEAF = 'T' WHERE ID = NEW.PARENT_ID;
END IF;
END
Примечание:family
поля ID, PARENT_ID, IS_LEAF
Примечание 2: Обратите внимание, что я всегда обновляю parent_id
, и моя структура является иерархической al, поэтому нет цикла. Кроме того, я проверяю, является ли значение 'F'
, и я пытаюсь изменить его на 'T'
, поэтому, если я допустил ошибку с родителем, он обновляет одну и ту же строку один раз.
Есть ли способ избежать этой ошибки?