• 締切済み

ストアドプロシージャはアトミックに実行されるのでしょうか?

MySQLのストアドプロシージャやストアドファンクションは、 アトミックに実行されるのでしょうか? それとも、BEGIN~COMMITすべき(アトミックでない)でしょうか?

みんなの回答

回答No.1

RDBMSによっては、ストアドルーチン内でCOMMITできるものもありますが、MySQLではMySQL 5.1現在はストアドルーチン内でのCOMMITは未実装です。 すなわち、ストアドルーチンだけが、COMMITやROLLBACKすることはありません。

sweepea
質問者

補足

ご回答ありがとうございます。 ということは、ストアドプロシージャ内の処理はアトミックでは ないということでしょうか? 例えば、 CREATE PROCEDURE hoge() BEGIN   UPDATE table1;   UPDATE table2; END のようなことをした時、UPDATE table1 の実行後に、別のプロセスが、 DBの内容を変更した後に、UPDATE table2 を実行してしまう ということになりますでしょうか?

関連するQ&A