我有两个应用程序,它们都在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
您还需要注意,您的应用程序超时时间长于锁定超时时间,因此不会引起其他问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句