【发布时间】:2015-08-11 06:06:56
【问题描述】:
我正在尝试在 MySQL 中执行 CREATE PROCEDURE IF NOT EXISTS。但是看起来 MySQL 本身并不支持这一点,这对我来说似乎是一个重大疏忽。
我创建了一个 Spring Batch Java 应用程序,其中包含业务模式定义,其中包括表定义和存储过程定义。表定义很好,因为他们说CREATE TABLE IF NOT EXISTS。我希望存储过程定义相同,因为此业务模式脚本将在应用程序启动时运行。
MySQL 确实有DROP PROCEDURE IF EXISTS,但我担心在创建之前运行它会遇到可能的竞争条件。如果我运行该应用程序的多个实例,而当我执行 DROP 和后续 CREATE 时,其他实例之一正在运行其中一个存储过程,该怎么办?这似乎是一个坏主意。我不希望它打断任何已经在运行的东西。
其他人现在一定遇到过同样的问题。解决办法是什么?
【问题讨论】:
-
挖,找到这个,引用mysql问题,还在挖codeofhonor.com/blog/…