Apakah ada alternatif untuk "Membuat atau mengganti prosedur" di MySQL?

16

Apakah ada versi "buat atau ganti prosedur" untuk MySQL? Saya tidak bisa melakukan ini atau skrip prosedur dropping jika ada sebelum kompilasi ulang tanpa mendapatkan pesan kesalahan bahwa prosedur tersimpan ada.

DELIMITER $$

-- would love to be able to drop procedure if exists db.sp_tmp_90days;  
-- or use "create or replace"

create procedure db.sp_tmp_90days()

BEGIN
drop table db.tmp_90days;

create table db.tmp_90days ( 
    user_name varchar(128), 
    first_name varchar(50), 
    last_name varchar(50), 
    system varchar(10), 
    last_login datetime 
);

alter table db.tmp_90days add index idx_user_name(user_name);
alter table db.tmp_90days add index idx_system(system);
alter table db.tmp_90days add index idx_last_login(last_login);

insert into db.tmp_90days (user_name, first_name, last_name, system, last_login)
    SELECT
        [...]
END $$
amatusko
sumber

Jawaban:

20

Ini adalah sintaks untuk menjatuhkannya jika ada

DROP PROCEDURE IF EXISTS db.sp_tmp_90days;
Rohit Gupta
sumber
3
Bisa juga menyebutkan bahwa MariaDB, "pengganti drop-in" untuk MySQL, memang mendukung CREATE OR REPLACE PROCEDUREsintaks sejak versi 10.1.
dbdemon