У меня есть следующий скрипт MySQL:
start transaction;
set autocommit = 0;
call RollbackRemove(1, 10);
call RollbackRemove(2, 5000);
commit;
и процедура:
create procedure RollbackRemove(a INT, b NUMERIC(8, 0))
begin
declare ret bool;
select Remove(a, b) into ret;
if not ret then
rollback;
end if;
end //
Он пытается удалить определенную сумму из каждого элемента, и, если одно удаление не удается, транзакция откатывается (внутри процедуры). Однако я заметил, что даже после вызова отката скрипт продолжает выполняться, но это нежелательно. Также я хотел бы иметь возможность сообщить об ошибке (это будет вызываться из php). Я искал механизм, который закончил бы сценарий раньше, что-то вроде return
на других языках, но ничего не нашел. Что я должен использовать в такой ситуации?
Может быть, вы можете использовать СИГНАЛ поднять ошибку.
Других решений пока нет …