У меня есть 4 хранимые процедуры, давайте назовем их spA, spB, spC и spD .
Каждая из этих хранимых процедур имеет стартовую транзакцию, фиксацию и откат.
spA в настоящее время является родительской хранимой процедурой ( SP).) и внутри него я вызываю spB, spC, spD в соответствующем порядке.По-видимому, поскольку все SP имеют фиксацию в них, при сбое spC операции DML, выполняемые в spB, не возвращаются, поскольку они уже зафиксированы, и то же самое, когда spD завершается ошибкой, операции в spB и spC не откатываются.
Причина, по которой я сделал коммит в spB, spC и spD, заключается в том, что позже я мог бы просто использовать любой из этих SP непосредственно для выполнения операций, относящихся к SP.
В настоящее время я планирую использовать флаг входного бита, чтобы решить, следует ли совершать транзакцию.В MS SQL есть возможность проверить @@ transcount, однако я не могу найти что-то похожее в MySQL.
Мне было интересно, есть ли лучший способ справиться с этим сценарием.