MySQL에서“Create or replace procedure”에 대한 대안이 있습니까?


16

MySQL 용 "만들기 또는 바꾸기 절차"버전이 있습니까? 스토어드 프로 시저가 존재한다는 오류 메시지를 표시하지 않고 재 컴파일하기 전에 존재하는 경우 프로 시저 삭제를 스크립트로 작성하거나 스크립트를 작성할 수 없습니다.

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

답변:


20

존재하는 경우이를 삭제하는 구문입니다.

DROP PROCEDURE IF EXISTS db.sp_tmp_90days;

3
MySQL의 "드롭 인 대체"인 MariaDB는 CREATE OR REPLACE PROCEDURE버전 10.1부터 구문을 지원한다고 언급 할 수 있습니다 .
dbdemon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.