Вот что я пытаюсь сделать:
Когда в таблицу ACCOUNTS
добавлен новый INSERT
, мне нужно обновить строку в ACCOUNTS
, где pk
= NEW.edit_on
, установив status='E'
для обозначения того, что конкретная (старая) учетная запись имеет был отредактирован.
DELIMITER $$
DROP TRIGGER IF EXISTS `setEditStatus`$$
CREATE TRIGGER `setEditStatus` AFTER INSERT on ACCOUNTS
FOR EACH ROW BEGIN
update ACCOUNTS set status='E' where ACCOUNTS.pk = NEW.edit_on ;
END$$
DELIMITER ;
Требование НЕ, что я манипулирую недавно вставленным столбцом, но уже существующий столбец с pk = NEW.edit_on
Однако я не могу обновить ту же таблицу: Can't update table ACCOUNTS ... already used by the statement that invoked this trigger
Пожалуйста, предложите обходное решение
PS: Я уже прошел Обновление таблицы в триггере после обновления в той же таблице, Вставить в ту же таблицу триггер mysql, Обновить с помощью триггера вставки в той же таблице и триггер mysql с вставкой и обновлением после вставки в таблицу, но они, похоже, не отвечают на мой вопрос.
Edit
ACCOUNTS
Таблица:
CREATE TABLE `ACCOUNTS` (
`pk` bigint(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` bigint(9) unsigned NOT NULL,
`edit_on` bigint(10) unsigned DEFAULT NULL,
`status` varchar(1) NOT NULL DEFAULT 'A',
PRIMARY KEY (`pk`) USING BTREE) ENGINE=InnoDB AUTO_INCREMENT=2147483726 DEFAULT CHARSET=latin1