SQL Trigger คือเหตุการณ์ (event) ที่กระตุ้นเหตุการณ์อื่นๆ ให้เกิดขึ้น เมื่อผู้ใช้โต้ตอบกับตารางเฉพาะ คำสั่ง SQL นี้ช่วย validate ข้อมูลฟอร์ม หรือบังคับใช้กฎ (enforcing rules)
Trigger ถูก execute (รัน) ก่อน (BEFORE) หรือหลัง (AFTER) เหตุการณ์ต่อไปนี้:
- INSERT – เมื่อแถวใหม่ถูกเพิ่มเข้ามา
- UPDATE – เมื่อแถวที่มีอยู่ถูกอัปเดต
- DELETE – เมื่อแถวถูกลบ
ว่าทริกเกอร์ไหนจะทำงานและเกิดอะไรขึ้น ขึ้นอยู่กับวิธีที่เขียน มาเริ่มสร้างคำสั่ง CREATE:
CREATE TRIGGER <trigger_name> [BEFORE|AFTER] [INSERT|UPDATE|DELETE] ON <table_name> [FOR EACH ROW|FOR EACH STATEMENT] BEGIN <trigger_logic> END;
ระหว่าง <> ใส่ชื่อหรือตรรกะของคุณ ใส่ [ ] เลือก 1 ตัวเลือกจากที่มี
BEFORE/AFTER และ INSERT|UPDATE|DELETE: เลือก 1 จากแต่ละรายการ BEFORE/AFTER กำหนดว่า trigger เกิดขึ้นเมื่อไหร่ INSERT/UPDATE/DELETE คือเหตุการณ์ที่จะกระตุ้น trigger
FOR EACH ROW|FOR EACH STATEMENT: ความต่างคือจำนวนครั้งที่ trigger รัน FOR EACH ROW ทริกเกอร์ทุกแถวที่ได้รับผลกระทบในตาราง FOR EACH STATEMENT รับประกันรันอย่างน้อย 1 ครั้ง ไม่ว่าจะมีแถวอัปเดตหรือไม่
คล้ายกับฐานข้อมูลหรือตาราง มีตัวเลือก DROP TRIGGER:
DROP TRIGGER [IF EXISTS] trigger_name;
IF EXISTS เป็นส่วน optional ของไวยากรณ์ หากรวมไว้ใน statement block จะป้องกัน error "trigger doesn't exist" ตารางที่ถูกลบจะ drop triggers ที่เกี่ยวข้องทั้งหมดอัตโนมัติ
ทราบว่า SQL trigger ต้องการ 3 สิ่งหลัก: คำสั่ง CREATE ให้ชื่อ trigger และเมื่อเหตุการณ์เกิดขึ้น, trigger ทำงานบ่อยแค่ไหน, และบล็อก BEGIN/END ที่วางตรรกะ trigger จริง
ฝึกฝนต่อไปหากเข้าใจไม่ทันที – เพราะเป็น advanced concept ใน SQL อาจต้องซ้ำมากกว่าหัวข้อและฟังก์ชัน SQL อื่นๆ