Có cách nào khác để tạo hay thay thế thủ tục trên mạng trong MySQL không?


15

Có phiên bản "tạo hoặc thay thế thủ tục" cho MySQL không? Tôi dường như không thể làm điều này hoặc kịch bản bỏ quy trình nếu tồn tại trước khi biên dịch lại mà không nhận được thông báo lỗi rằng thủ tục được lưu trữ tồn tại.

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

Câu trả lời:


20

Đây là cú pháp để thả nó nếu nó tồn tại

DROP PROCEDURE IF EXISTS db.sp_tmp_90days;

3
Cũng có thể đề cập rằng MariaDB, một "thay thế thả xuống" cho MySQL, không hỗ trợ CREATE OR REPLACE PROCEDUREcú pháp kể từ phiên bản 10.1.
dbdemon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.