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 $$

Jawaban:


20

Ini adalah sintaks untuk menjatuhkannya jika ada

DROP PROCEDURE IF EXISTS db.sp_tmp_90days;

3
Bisa juga menyebutkan bahwa MariaDB, "pengganti drop-in" untuk MySQL, memang mendukung CREATE OR REPLACE PROCEDUREsintaks sejak versi 10.1.
dbdemon
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.