3

2 つのアプリケーションがあり、どちらも MySQL で同じストアド プロシージャを使用しています。この手順を同期させたいと思います。つまり、1 つのアプリケーションがそれを呼び出している間、もう 1 つのアプリケーションは待機する必要があります。

アプリケーションのコードを変更せずにこれを行う方法はありますか (つまり、ストアド プロシージャを変更するだけです)。

ありがとう、クリシー

4

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

また、他の問題が発生しないように、アプリケーションのタイムアウトがロックのタイムアウトよりも長くなるように注意する必要があります。

于 2013-08-26T08:31:55.880 に答える