MySQL Trigger update для текущей таблицы

Posted: 11 июня 2012


Попытался написать триггер для апдейта текущей таблицы и получил "Can’t update table ‘tbl_name’ in stored function/trigger because it is already used by statement which invoked this stored function/trigger."

Итак начнем с начала:

DELIMITER $$
USE `db`$$

CREATE TRIGGER update_modificationa_date BEFORE UPDATE ON tbl_name
FOR EACH ROW BEGIN
    UPDATE tbl_name SET NEW.last_mod = NOW() WHERE id = OLD.id;
END;

Такой код естественно вернет ошибку, поскольку можно получить так называемый рекурсивный редирект(recursive redirect), когда апдейт дергает триггер, а триггер делает апдейт и так по кругу

Решение на самом деле простое - убрать конструкцию UPDATE

-- Trigger DDL Statements
DELIMITER $$
USE `db`$$

CREATE TRIGGER update_modificationa_date BEFORE UPDATE ON tbl_name
FOR EACH ROW BEGIN
    SET NEW.last_mod = NOW();
END;

If you find the post helpful you can share it


Ваше мнение:

Имя

cool : 2014-12-02 12:11:56

Большое спасибо!

Boolean_Type : 2015-03-19 21:33:29

Здравствуйте!) Что есть NEW в этом коде?

Александр : 2017-11-15 10:33:21

Спасибо огромное!
   other with MySQL
drcreazy © 2008-2012 all rights reserved