- 締切済み
ストアドプロシージャはアトミックに実行されるのでしょうか?
MySQLのストアドプロシージャやストアドファンクションは、 アトミックに実行されるのでしょうか? それとも、BEGIN~COMMITすべき(アトミックでない)でしょうか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- chukenkenkou
- ベストアンサー率43% (833/1926)
回答No.1
RDBMSによっては、ストアドルーチン内でCOMMITできるものもありますが、MySQLではMySQL 5.1現在はストアドルーチン内でのCOMMITは未実装です。 すなわち、ストアドルーチンだけが、COMMITやROLLBACKすることはありません。
補足
ご回答ありがとうございます。 ということは、ストアドプロシージャ内の処理はアトミックでは ないということでしょうか? 例えば、 CREATE PROCEDURE hoge() BEGIN UPDATE table1; UPDATE table2; END のようなことをした時、UPDATE table1 の実行後に、別のプロセスが、 DBの内容を変更した後に、UPDATE table2 を実行してしまう ということになりますでしょうか?