我有两个应用程序,它们都在MySQL中使用相同的存储过程。我希望这个过程是同步的,即当一个应用程序调用它时,另一个应用程序必须等待。
是否有一种不改变应用程序代码(即只修改存储过程)的方法来做到这一点?
谢谢,krisy
发布于 2013-08-26 08:31:55
您绝对可以在存储过程中做到这一点,而无需更改应用程序代码,但请记住,您正在引入锁定问题和超时的可能性。
使用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您还需要注意应用程序超时时间比锁定超时时间长,这样您就不会产生其他问题。
https://stackoverflow.com/questions/18438762
复制相似问题