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

การใช้ Trigger หลังการลบข้อมูล (AFTER DELETE) ใน MySQL

ภาพรวม

ใน MySQL สามารถสร้าง Trigger ที่ทำงานอัตโนมัติหลังจากคำสั่ง DELETE ถูกดำเนินการเสร็จสิ้น โดยใช้คีย์เวิร์ด AFTER DELETE ซึ่งเหมาะสำหรับการบันทึกประวัติ (Audit Log) หรือทำการกระทำตอบกลับเมื่อมีการลบข้อมูล

ไวยากรณ์พื้นฐาน

DELIMITER //
CREATE TRIGGER trigger_name
AFTER DELETE
ON table_name
FOR EACH ROW
BEGIN
    -- คำสั่ง SQL ที่ต้องการให้ทำงาน
    statement_1;
    statement_2;
    ...
END; //
DELIMITER ;

ตัวอย่างการใช้งานจริง

1. สร้างตารางตัวอย่าง

CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    FirstName VARCHAR(100)
);

2. เพิ่มข้อมูลทดสอบ

INSERT INTO DemoTable (FirstName) VALUES ('John');
INSERT INTO DemoTable (FirstName) VALUES ('Mike');

3. สร้าง Trigger สำหรับบันทึกผู้ใช้และเวลาที่ลบข้อมูล

DELIMITER //
CREATE TRIGGER history_of_Table
AFTER DELETE
ON DemoTable
FOR EACH ROW
BEGIN
    SELECT USER() INTO @userName;
    SELECT NOW() INTO @deleteDatetime;
END; //
DELIMITER ;

4. ทดสอบการทำงานของ Trigger

-- ลบแถวแรก
DELETE FROM DemoTable WHERE Id = 1;

-- ตรวจสอบค่าที่ Trigger บันทึกไว้
SELECT @userName;
SELECT @deleteDatetime;

5. ผลลัพธ์ที่คาดหวัง

+----------------+
| @userName      |
+----------------+
| root@localhost |
+----------------+

+---------------------+
| @deleteDatetime     |
+---------------------+
| 2019-07-09 21:06:31 |
+---------------------+

จุดสำคัญที่ต้องจำ

  • Trigger จะทำงาน หลังจาก การลบข้อมูลสำเร็จแล้ว
  • สามารถเข้าถึงค่าของแถวที่ถูกลบผ่าน OLD.column_name
  • เหมาะสำหรับการสร้าง Audit Trail หรือ Sync ข้อมูลไปยังตารางอื่น
  • ใช้ DELIMITER เพื่อกำหนดตัวคั่นคำสั่งชั่วคราว ขณะสร้าง Trigger