怎么说如果在MySQL中不存在创建过程

Fra*_*ank 23 mysql stored-procedures exists

我正在尝试编写一个脚本来在MySQL数据库中创建一个过程,但我想先检查它是否存在.

我知道如何为表执行此操作,但是当我对存储过程使用相同的语法时,它不会编译.

有人知道吗?谢谢

Cor*_*ein 27

只要删除该过程(如果存在),然后重新添加它:

DROP PROCEDURE IF EXISTS my_procedure;
CREATE PROCEDURE my_procedure()
Run Code Online (Sandbox Code Playgroud)

  • 这不是一个理想的解决方案。不能保证旧程序与新程序相同,如果是这样,我们将永久销毁旧程序。 (4认同)

Ben*_*ish 10

SELECT EXISTS(SELECT 1 FROM mysql.proc p WHERE db = 'db_name' AND name = 'stored_proc_name');
Run Code Online (Sandbox Code Playgroud)

所以你可以这样做:

IF NOT EXISTS(SELECT 1 FROM mysql.proc p WHERE db = 'db_name' AND name = 'stored_proc_name') THEN
....
END IF;
Run Code Online (Sandbox Code Playgroud)


小智 5

它不存在。我们必须编写一个模拟相同功能的存储过程。基本上,我们通过调用执行“如果存在”检查的存储过程来创建存储过程。