Tôi chỉ gói tập lệnh SQL của mình trong một thủ tục, trong đó mã có điều kiện được cho phép. Nếu bạn không muốn để các báo cáo nằm lung tung, bạn có thể bỏ quy trình khi hoàn thành. Đây là một ví dụ:
delimiter //
create procedure insert_games()
begin
set @platform_id := (select id from platform where name = 'Nintendo DS');
-- Only insert rows if the platform was found
if @platform_id is not null then
insert into game(name, platform_id) values('New Super Mario Bros', @platform_id);
insert into game(name, platform_id) values('Mario Kart DS', @platform_id);
end if;
end;
//
delimiter ;
-- Execute the procedure
call insert_games();
-- Drop the procedure
drop procedure insert_games;
Nếu bạn chưa sử dụng các thủ tục, từ khóa "dấu phân cách" có thể cần một số giải thích. Dòng đầu tiên chuyển dấu phân tách thành "//" để chúng ta có thể bao gồm dấu chấm phẩy trong định nghĩa thủ tục của mình mà MySQL chưa cố gắng diễn giải chúng. Khi thủ tục đã được tạo, chúng tôi chuyển dấu phân cách trở lại ";" để chúng ta có thể thực thi các câu lệnh như bình thường.