dポイントプレゼントキャンペーン実施中!

MySQLのストアドプロシージャやストアドファンクションは、
アトミックに実行されるのでしょうか?

それとも、BEGIN~COMMITすべき(アトミックでない)でしょうか?

A 回答 (1件)

RDBMSによっては、ストアドルーチン内でCOMMITできるものもありますが、MySQLではMySQL 5.1現在はストアドルーチン内でのCOMMITは未実装です。


すなわち、ストアドルーチンだけが、COMMITやROLLBACKすることはありません。

この回答への補足

ご回答ありがとうございます。

ということは、ストアドプロシージャ内の処理はアトミックでは
ないということでしょうか?

例えば、

CREATE PROCEDURE hoge()
BEGIN
  UPDATE table1;
  UPDATE table2;
END

のようなことをした時、UPDATE table1 の実行後に、別のプロセスが、
DBの内容を変更した後に、UPDATE table2 を実行してしまう
ということになりますでしょうか?

補足日時:2008/05/25 11:48
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す