Я хотел бы создать триггер update/insert
для текущей даты (чтобы сохранить метку времени, когда она была изменена последней).Итак, поскольку я прочитал, что вы не можете определить триггер update/insert
, но для этого мне нужно определить два триггера, я начал с insert
-триггера.
У меня есть следующий код:
drop table if exists test;
CREATE TABLE IF NOT EXISTS test (
id int,
mydate datetime not null default now(),
ts datetime
);
DELIMITER $$
DROP TRIGGER IF EXISTS update_test_timestamp;
CREATE TRIGGER `update_test_timestamp`
AFTER INSERT ON `test`
FOR EACH ROW
BEGIN
UPDATE `test` SET `ts` = CURRENT_TIMESTAMP WHERE `id` = NEW.id;
END $$
DELIMITER ;
INSERT INTO test (id) VALUES (1);
По сути, я хочу сохранить временную метку при создании и "lastupdate" -timestamp (ts
).К сожалению, ошибка:
Код ошибки: 1442. Невозможно обновить таблицу 'test' в сохраненной функции / триггере, поскольку она уже используется оператором, который вызвал эту сохраненную функцию / триггер.
Что я сделал не так?Когда я пытаюсь изменить его на update
-триггер (вместо insert
), я получаю ту же проблему.