2つのストアドプロシージャA、Bがあり、どちらもトランザクションブロックにあります。問題は、AがBを呼び出すことです。したがって、再帰的/ネストされたトランザクションがあります。問題があるかわかりませんか?Aに電話するとどうなりますか?
「MySQLストアドプロシージャプログラミング」から引用:
START TRANSACTION
新しいトランザクションの開始を意味します。既存のトランザクションがすでに進行中の場合START TRANSACTION
は、暗黙的にを発行しCOMMIT
ます。を発行するSTART TRANSACTION
と、autocommitプロパティ(次のセクションで説明)は、トランザクションが終了するまで、効果的かつ暗黙的に0に設定されます。コードを読んだり保守したりする人には暗黙的ではない可能性があるSTART TRANSACTION
ため、ステートメントの前に既存のトランザクションを明示的にコミットまたはロールバックすることをお勧めします。COMMIT