MySQL:如何以原子方式修改存储过程?

时间:2012-04-23 21:48:49

标签: mysql stored-procedures distributed-system

我已经通过互联网进行了搜索,并了解更改商店流程正文的唯一方法是再次删除并创建它。该机制似乎没有任何问题,但如果我有一个客户端应用程序(或数千个分布式客户端)不断调用存储过程来更新服务器数据库上的某些数据,则删除该过程将导致数据丢失和/或损坏。 / p>

我在想是否存在类似“CREATE PROCEDURE IF EXIST ...”或类似功能的语法,以便更新操作顺利进行。但我没有发现MySQL中有这样的东西。

那你们怎么认为这个问题可以解决?真棒的想法?

1 个答案:

答案 0 :(得分:3)

您无法在MySQL中修改存储过程(尽管可以更改其特性)。来自ALTER PROCEDURE页。

  

此语句可用于更改存储的特征   程序。可以在ALTER PROCEDURE中指定多个更改   声明。但是,您无法更改参数或正文   使用此语句的存储过程;要做出这样的改变,你必须   使用DROP PROCEDURE和CREATE删除并重新创建过程   PROCEDURE。

虽然在执行此更新时可能会丢失数据(尽管它应该是一个相对较小的窗口),但您的数据不太可能被破坏。如果您的系统需要防止数据库停机造成的数据丢失,我会看一下消息队列技术。