MySQL Trigger คืออะไร? ใช้ทำอะไรในระบบฐานข้อมูล

Trigger (ทริกเกอร์) คือคำสั่ง SQL ชุดหนึ่งที่ถูกเรียกใช้อัตโนมัติเมื่อมีการกระทำบางอย่าง (event) เกิดขึ้นกับตารางในฐานข้อมูล เช่น การ INSERT, UPDATE หรือ DELETE แถวข้อมูล

ต่างจาก Stored Procedure ที่ต้องเรียกใช้ด้วย CALL แต่ Trigger จะทำงานเองอัตโนมัติโดยไม่ต้องเรียก

สรุปง่าย ๆ ว่า Trigger คือระบบเฝ้าดูการเปลี่ยนแปลงของข้อมูลในตาราง

ประเภทของ Trigger

Trigger ใน MySQL แบ่งออกเป็น 6 แบบตามเหตุการณ์และเวลาที่ทำงาน

Trigger Typeทำงานเมื่อ…
BEFORE INSERTก่อนเพิ่มข้อมูลใหม่ลงตาราง
AFTER INSERTหลังเพิ่มข้อมูลใหม่ลงตาราง
BEFORE UPDATEก่อนอัปเดตข้อมูล
AFTER UPDATEหลังอัปเดตข้อมูล
BEFORE DELETEก่อนลบข้อมูล
AFTER DELETEหลังลบข้อมูล

Trigger ใช้ทำอะไรได้บ้างในระบบฐานข้อมูล?

Trigger สามารถประยุกต์ใช้ได้หลากหลาย เช่น

  • อัปเดตตารางอื่นอัตโนมัติ
    • เช่น เมื่อมีการขายสินค้า Trigger จะหักจำนวน stock ทันที
  • สร้าง log หรือ audit trail
    • บันทึกว่าใครแก้ไขอะไรไว้ในอีกตาราง เช่น log_table
  • ป้องกันข้อมูลผิดเงื่อนไข
    • เช่น ไม่อนุญาตให้ลบผู้ใช้ระดับ admin
  • เติมข้อมูลอัตโนมัติ (auto calculate)
    • เช่น คำนวณภาษี, คำนวณยอดรวม, หรือสร้าง slug อัตโนมัติ
  • เพิ่มความปลอดภัยของข้อมูล
    • เช่น ตรวจสอบก่อนลบ หรือย้อนกลับการเปลี่ยนแปลงหากผิดเงื่อนไข

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

Trigger บันทึกการเพิ่มลูกค้าใหม่

SQL
CREATE TRIGGER log_new_customer
AFTER INSERT ON customers
FOR EACH ROW
INSERT INTO customer_log(message, log_time)
VALUES (CONCAT('Add: ', NEW.name), NOW());
  • คำสั่งนี้จะทำงานทันทีหลังจากมีการเพิ่มลูกค้าใหม่เข้ามาใน customers
  • ระบบจะบันทึกชื่อผู้ที่ถูกเพิ่มลงใน customer_log พร้อมเวลาปัจจุบัน

สิ่งที่ Trigger ไม่สามารถทำได้

  • ไม่สามารถใช้ คำสั่ง COMMIT หรือ ROLLBACK ภายใน Trigger
  • ไม่สามารถ เรียก Trigger ซ้อนกันได้หลายระดับ
  • ไม่เหมาะกับการทำงานที่ต้องมี UI หรือตอบกลับผู้ใช้โดยตรง
แชร์เรื่องนี้