Данный вопрос уже был задан и имеет решение:
Есть триггер :
DELIMITER //
create trigger betdesk_db.after_update_confirm
after update on pre_Accounts for each row
begin
insert into Accounts(mail, `password`, solt, role_id) values (NEW.mail, NEW.password, NEW.solt, 2);
delete from pre_Accounts where NEW.pre_account_id = pre_account_id;
end; //
DELIMITER ;
Смысл таков, что при обновлении данных в таблице pre_Accounts, они переносятся в таблицу Accounts и удаляются.
Однако ошибка возникает при обновлении данных:
update pre_Accounts set confirm = true where pre_account_id = 1;
Данные не обновляются из-за следующей ошибки:
Error Code: 1442. Can't update table 'pre_accounts' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
Где я ошибся, подскажите..
У вас причина указана в вопросе "because it is already used by statement which invoked this stored function/trigger." Другими словами вы не можете в триггере after update для таблицы удалять из этой же таблицы. Как вариант можно попробовать удалить запись в триггере для таблицы Acсounts
Продвижение своими сайтами как стратегия роста и независимости