3

我有两个应用程序,它们都在 MySQL 中使用相同的存储过程。我希望这个过程是同步的,也就是说,当一个应用程序调用它时,另一个必须等​​待。

有没有办法在不改变应用程序代码的情况下做到这一点(即只修改存储过程)?

谢谢,克里斯

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 回答