2013-08-26 39 views
3

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

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

感谢, krisy

回答

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 

您还需要照顾您的应用程序超时比锁定超时,所以你不要再不会产生其他问题。

+0

谢谢你,我正在找的东西! :-) – krisy