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 ответ
Когда выполнение оператора вызовет неявную фиксацию текущей транзакции, этот оператор не разрешен в триггере или хранимой функции.
Это включает в себя оператор в хранимой процедуре, который вызывается триггером или функцией - здесь нет уровня абстракции, который делает недействительное действие более допустимым.