mysql: использовать процедуру внутри триггера

Мне нужно вызвать процедуру, которая изменяет пароль root внутри триггера. Это процедура

delimiter //
create procedure foobar ()
begin SET PASSWORD FOR 'root'@'localhost' = 'foobar';
end//
delimiter ;

и это триггер

delimiter //
create trigger rootpass
after delete on map
for each row
begin
call foobar;
end //
delimiter ;

Кажется, синтаксис правильный, но когда я запускаю удаление, я получаю эту ошибку

ОШИБКА 1445 (HY000): Не разрешено устанавливать автокоммит из сохраненной функции или триггера.

Так что я думаю, что пытаюсь сделать запрещенную вещь, есть ли способ, которым это может работать в MySQL? Я знаю, что все это звучит странно / ужасно, но это способ для моего приложения понять, что что-то было удалено.

1 ответ

Решение

Когда выполнение оператора вызовет неявную фиксацию текущей транзакции, этот оператор не разрешен в триггере или хранимой функции.

Это включает в себя оператор в хранимой процедуре, который вызывается триггером или функцией - здесь нет уровня абстракции, который делает недействительное действие более допустимым.

Другие вопросы по тегам