Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ความหมายของ DELIMITER // ใน Trigger ของ MySQL

บทบาทของ DELIMITER ใน Trigger และ Stored Procedure

คำสั่ง DELIMITER // ใช้เปลี่ยนตัวคั่นคำสั่ง SQL จากจุดท้าย (;) เป็น // ชั่วคราว เพื่อให้สามารถเขียนคำสั่งหลายคำสั่ง (ที่มี ; ภายใน) ภายใน Trigger หรือ Stored Procedure ได้

ตัวอย่าง Trigger ใช้ DELIMITER

1. สร้างตารางพนักงาน

CREATE TABLE EmployeeTable (
    EmployeeId INT,
    EmployeeName VARCHAR(100),
    EmployeeSalary FLOAT
);

2. สร้าง Trigger ก่อน Insert (BEFORE INSERT)

DELIMITER //

CREATE TRIGGER CheckSalary 
BEFORE INSERT ON EmployeeTable
FOR EACH ROW
BEGIN
    IF NEW.EmployeeSalary < 1000 THEN
        SET NEW.EmployeeSalary = 10000;
    END IF;
END //

DELIMITER ;

การทดสอบ Trigger

กรณีที่ 1: เงินเดือนต่ำกว่า 1000 (จะถูกตั้งค่าเป็น 10000)

INSERT INTO EmployeeTable VALUES (1, 'Carol', 500);
SELECT * FROM EmployeeTable;
EmployeeIdEmployeeNameEmployeeSalary
1Carol10000

กรณีที่ 2: เงินเดือน 1000 หรือมากกว่า (คงค่าเดิม)

TRUNCATE TABLE EmployeeTable;
INSERT INTO EmployeeTable VALUES (2, 'Bob', 1000), (3, 'Carol', 2500);
SELECT * FROM EmployeeTable;
EmployeeIdEmployeeNameEmployeeSalary
2Bob1000
3Carol2500

จุดสำคัญ

  • DELIMITER // ต้องอยู่ ก่อน CREATE TRIGGER
  • END // ใช้ปิด Trigger แทน END;
  • DELIMITER ; ต้องคืนค่ากลับหลังสร้างเสร็จ
  • ใช้ได้กับ Stored Procedure, Function, Event เช่นกัน
  • ใน MySQL Workbench / phpMyAdmin มักมีการตั้งค่า Delimiter แยกต่างหาก