Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Chèn dữ liệu vào 2 bảng bằng một lời gọi Stored Procedure MySQL

Tạo stored procedure nhận tham số, thực hiện 2 lệnh INSERT vào 2 bảng khác nhau.

Cú pháp tạo procedure

DELIMITER //
CREATE PROCEDURE ten_proc(IN ten_tham_so INT)
BEGIN
    INSERT INTO bang1(cot1) VALUES(ten_tham_so);
    INSERT INTO bang2(cot2) VALUES(ten_tham_so);
END //
DELIMITER ;

Ví dụ minh họa

Tạo 2 bảng:

mysql> CREATE TABLE DemoTable1 (StudentScore INT);
mysql> CREATE TABLE DemoTable2 (PlayerScore INT);

Tạo procedure:

mysql> DELIMITER //
mysql> CREATE PROCEDURE insert_proc(IN value INT)
    BEGIN
        INSERT INTO DemoTable1(StudentScore) VALUES(value);
        INSERT INTO DemoTable2(PlayerScore) VALUES(value);
    END //
mysql> DELIMITER ;

Gọi procedure:

mysql> CALL insert_proc(89);

Kiểm tra 2 bảng:

mysql> SELECT * FROM DemoTable1; -- 89
mysql> SELECT * FROM DemoTable2; -- 89

Lưu ý:

  • DELIMITER // thay đổi ký tự kết thúc câu lệnh để tránh nhầm với ; bên trong proc.
  • MySQL không hỗ trợ transaction tự động trong proc - hãy dùng START TRANSACTION; ... COMMIT; nếu cần atomic.
  • Proc chạy với quyền DEFINER (mặc định user tạo), không phải CALLER (trừ khi khai báo SQL SECURITY INVOKER).