我已经通过互联网进行了搜索,并了解更改商店流程正文的唯一方法是再次删除并创建它。该机制似乎没有任何问题,但如果我有一个客户端应用程序(或数千个分布式客户端)不断调用存储过程来更新服务器数据库上的某些数据,则删除该过程将导致数据丢失和/或损坏。 / p>
我在想是否存在类似“CREATE PROCEDURE IF EXIST ...”或类似功能的语法,以便更新操作顺利进行。但我没有发现MySQL中有这样的东西。
那你们怎么认为这个问题可以解决?真棒的想法?
答案 0 :(得分:3)
您无法在MySQL中修改存储过程(尽管可以更改其特性)。来自ALTER PROCEDURE
页。
此语句可用于更改存储的特征 程序。可以在ALTER PROCEDURE中指定多个更改 声明。但是,您无法更改参数或正文 使用此语句的存储过程;要做出这样的改变,你必须 使用DROP PROCEDURE和CREATE删除并重新创建过程 PROCEDURE。
虽然在执行此更新时可能会丢失数据(尽管它应该是一个相对较小的窗口),但您的数据不太可能被破坏。如果您的系统需要防止数据库停机造成的数据丢失,我会看一下消息队列技术。