У меня возникла проблема с триггером в MySQL. У меня есть столбец с именем «last_modified», который я хочу автоматически обновить с текущей датой и временем, когда редактируется таблица. С помощью триггера, это мой SQL-запрос:Обновление DATETIME с помощью триггера, получение ошибки 1442 в MySQL
delimiter //
CREATE TRIGGER trg_update_responders BEFORE UPDATE ON survey_responders
FOR EACH ROW
BEGIN
UPDATE survey_responders
SET NEW.last_modified = CURRENT_DATETIME();
END;//
Однако, когда я обновить таблицу, например, с этим запросом:
UPDATE survey_responders SET first_name = "bob" WHERE id = "1";
MySQL Workbench отображает ошибку 1442: «Невозможно обновить таблицу 'table_name' в хранимой функции/триггере, потому что он уже используется оператором, который вызывал эту сохраненную функцию/триггер "
Я рассмотрел похожие вопросы с той же ошибкой, но до сих пор не исправил ее. Помощь приветствуется.
** UPDATE **
Это сделал трюк:
delimiter //
CREATE TRIGGER trg_update_responders BEFORE UPDATE ON survey_responders
FOR EACH ROW
BEGIN
SET NEW.last_modified = CURRENT_TIMESTAMP();
END;//
кажется, что я просто не нужно повторять
UPDATE survey_responders
и current_datetime() не существует, Мне пришлось использовать CURRENT_TIMESTAMP().
Любая причина не обновлять последний_модифицированный столбец в самой инструкции обновления? –
Это часть задания; он требует, чтобы я использовал триггер. – Richard