Gibt es eine Alternative zu "Prozedur erstellen oder ersetzen" in MySQL?


15

Gibt es eine Version von "create or replace procedure" für MySQL? Ich kann dies nicht tun oder das Löschen der Prozedur per Skript ausführen, wenn dies vor dem erneuten Kompilieren vorhanden ist, ohne eine Fehlermeldung zu erhalten, dass die gespeicherte Prozedur vorhanden ist.

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

Antworten:


20

Dies ist die Syntax zum Löschen, falls vorhanden

DROP PROCEDURE IF EXISTS db.sp_tmp_90days;

3
Könnte auch erwähnen, dass MariaDB, ein "Drop-In-Ersatz" für MySQL, die CREATE OR REPLACE PROCEDURESyntax seit Version 10.1 unterstützt.
Dbdemon
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.