MySQL'de “Prosedür oluştur veya değiştir” seçeneğine bir alternatif var mı?


16

MySQL için "oluşturma veya değiştirme prosedürü" nin bir sürümü var mı? Saklı yordam var bir hata iletisi almadan yeniden derleme önce varsa bunu yapmak veya komut dosyası bırakma komut dosyası görünmüyor.

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

Yanıtlar:


20

Bu, varsa bırakacak sözdizimidir

DROP PROCEDURE IF EXISTS db.sp_tmp_90days;

3
Ayrıca MySQL için bir "drop-in yedek" olan MariaDB'nin CREATE OR REPLACE PROCEDUREsürüm 10.1'den beri sözdizimini desteklediğinden de bahsedebiliriz .
dbdemon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.