私は2つのアプリケーションを持っており、どちらもMySQLの同じストアドプロシージャを使用しています。 私は、この手順を同期させることを望んでいます。つまり、あるアプリケーションがそれを呼び出す間、もう1つは待機する必要があります。
アプリケーションのコードを変更せずに(これはストアドプロシージャの変更だけです)これを行う方法はありますか?
ありがとう、 クリシー
回答:
回答№1は2アプリケーションコードを変更することなくストアドプロシージャ内でこれを絶対に行うことができますが、ロックの問題とタイムアウトの可能性を導入することに注意してください。
つかいます GET_LOCK()
そして RELEASE_LOCK()
同期の世話をする。走る GET_LOCK
ストアドプロシージャの開始時に同期を実行する RELEASE_LOCK
一度やってしまえば:
IF (GET_LOCK("lock_name_for_this_SP", 60)) THEN
.... body of SP
RELEASE_LOCK("lock_name_for_this_SP");
ELSE
.... lock timed out
END IF
また、アプリケーションタイムアウトがロックタイムアウトよりも長いことに注意して、他の問題が発生しないようにする必要があります。