Выполните триггер на той же таблице при обновлении - PullRequest
1 голос
/ 30 марта 2019

Мне нужно выполнить триггер, содержащий оператор UPDATE для той же таблицы.

Я пробовал этот код.Если я проверяю таблицу, строка обновляется, но я получаю сообщение об ошибке:

Невозможно обновить таблицу «Заказы» в сохраненной функции / триггере, поскольку она уже используется оператором, который вызвал этосохраненная функция / триггер

DROP TRIGGER IF EXISTS UpdateTotal;

DELIMITER |

CREATE TRIGGER UpdateTotal BEFORE UPDATE ON Orders
FOR EACH ROW 
BEGIN
  UPDATE Orders P1
    SET NEW.order_total = NEW.order_total + 3.02
    WHERE order_id IN (SELECT * FROM (SELECT MAX(order_id) FROM Orders) P2);
END

|

DELIMITER ;

1 Ответ

0 голосов
/ 30 марта 2019

вы не можете делать все это в триггере.Согласно документации :

Внутри хранимой функции или триггера запрещено изменять таблицу, которая уже используется (для чтения или записи) оператором, которыйВызов функции или триггера.

Объясните больше о требованиях и структуре таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...