我有两个应用程序,它们都在 MySQL 中使用相同的存储过程。我希望这个过程是同步的,也就是说,当一个应用程序调用它时,另一个必须等待。
有没有办法在不改变应用程序代码的情况下做到这一点(即只修改存储过程)?
谢谢,克里斯
我有两个应用程序,它们都在 MySQL 中使用相同的存储过程。我希望这个过程是同步的,也就是说,当一个应用程序调用它时,另一个必须等待。
有没有办法在不改变应用程序代码的情况下做到这一点(即只修改存储过程)?
谢谢,克里斯
您绝对可以在存储过程中执行此操作,而无需更改应用程序代码,但请记住您正在引入锁定问题和超时的可能性。
使用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
您还需要注意您的应用程序超时时间比锁定超时时间长,这样您就不会遇到其他问题。