Ошибки в работе триггера MySQL [дубликат]

404
28 января 2017, 09:55

Данный вопрос уже был задан и имеет решение:

  • Ошибка триггера SQL 1 ответ

Есть триггер :

    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.

Где я ошибся, подскажите..

Answer 1

У вас причина указана в вопросе "because it is already used by statement which invoked this stored function/trigger." Другими словами вы не можете в триггере after update для таблицы удалять из этой же таблицы. Как вариант можно попробовать удалить запись в триггере для таблицы Acсounts

READ ALSO
В боевом режиме виснет сортировка по дате

В боевом режиме виснет сортировка по дате

В локале полный дамп базы - все летаетНа хостинге висим в глушняк (504я)

303
Как скрыть консоль обновления mysql?

Как скрыть консоль обновления mysql?

Каждый день при обновлении mysql вижу как она при этом распахивает окно и запускает терминал с выводом своего логаПросмотрел её настройки ничего...

437
Что не так с MySQL

Что не так с MySQL

Имею такую таблицу заказов: При каждом посещении сайта, выполняется такой запрос:

424