我在互联网上进行了搜索,了解到更改存储过程主体的唯一方法是删除并再次创建它。该机制似乎没有任何问题,但如果我有一个客户端应用程序(或数千个分布式客户端)不断调用存储过程以更新服务器数据库上的某些数据,则删除该过程将导致数据丢失和/或损坏。
我在想是否有像“CREATE PROCEDURE IF EXIST ...”这样的语法或类似的功能,这样更新操作就会顺利进行。然而,我没有发现 MySQL 中提供了这样的东西。
那么大家觉得这个问题怎么解决呢?很棒的想法?
我在互联网上进行了搜索,了解到更改存储过程主体的唯一方法是删除并再次创建它。该机制似乎没有任何问题,但如果我有一个客户端应用程序(或数千个分布式客户端)不断调用存储过程以更新服务器数据库上的某些数据,则删除该过程将导致数据丢失和/或损坏。
我在想是否有像“CREATE PROCEDURE IF EXIST ...”这样的语法或类似的功能,这样更新操作就会顺利进行。然而,我没有发现 MySQL 中提供了这样的东西。
那么大家觉得这个问题怎么解决呢?很棒的想法?
您不能修改 MySQL 中的存储过程(尽管您可以更改其特征)。从ALTER PROCEDURE
页面。
此语句可用于更改存储过程的特性。在 ALTER PROCEDURE 语句中可以指定多个更改。但是,您不能使用此语句更改存储过程的参数或主体;要进行此类更改,您必须使用 DROP PROCEDURE 和 CREATE PROCEDURE 删除并重新创建过程。
虽然执行此更新时可能会丢失数据(尽管它应该是一个相对较小的窗口),但您的数据不太可能损坏。如果您的系统需要防止数据库停机导致数据丢失,我会看看消息队列技术。