CREATE TRIGGER trigger_name { BEFORE | AFTER } { INSERT | UPDATE | DELETE } ON table_name
FOR EACH ROW
BEGIN
// Statement
// new.col_name
// old.col_name
END
DROP TRIGGER IF EXISTS delAudit;
DELIMITER //
CREATE TRIGGER delAudit AFTER DELETE ON customer
FOR EACH ROW
BEGIN
DELETE FROM audit
WHERE CUSTOMER_ID = old.CUSTOMER_ID;
END //
DELIMITER ;
Example 2 : ตัวอย่างการสร้าง Trigger ให้ INSERT ข้อมูล และอัพเดดข้อมูลที่เกี่ยวข้อง
จากรูปจะเห็นว่าตาราง customer กับ audit จะมีข้อมูลที่เชื่อมโยงกันด้วย CUSTOMER_ID ใน Column ของ USED ใน customer จะเป็นค่า SUM มาจาก audit โดยในตัวอย่างนี้เราจะทำ Trigger เมื่อเพิ่มข้อมูลใน audit ให้ทำการ SUM แล้วอัพเดดค่า USED ใน customer ด้วย
DROP TRIGGER IF EXISTS sumUsed;
DELIMITER //
CREATE TRIGGER sumUsed AFTER INSERT ON audit
FOR EACH ROW
BEGIN
DECLARE dUsed DECIMAL(18,2) DEFAULT 0;
SELECT SUM(USED) INTO dUsed FROM audit WHERE CUSTOMER_ID = new.CUSTOMER_ID;
UPDATE customer SET USED = dUsed WHERE CUSTOMER_ID = new.CUSTOMER_ID;
END //
DELIMITER ;
จากคำสั่งนี้จะเห็นว่าเมื่อมีการ INSERTที่ audit จะสั่งให้ SUM ค่าแล้วไป UPDATE ที่ customer
Trigger ที่ถูกสร้างบน phpMyAdmin
ทดสอบเพิ่มหรือ INSERTข้อมูลในตาราง audit
จะเห็นว่าที่ customer จะมีการ UPDATE คอลัมบ์ของ USED ให้อัตโนมัติ
DROP TRIGGER IF EXISTS sumUsed_Delete;
DELIMITER //
CREATE TRIGGER sumUsed_Delete AFTER DELETE ON audit
FOR EACH ROW
BEGIN
DECLARE dUsed DECIMAL(18,2) DEFAULT 0;
SELECT SUM(USED) INTO dUsed FROM audit WHERE CUSTOMER_ID = old.CUSTOMER_ID;
UPDATE customer SET USED = dUsed WHERE CUSTOMER_ID = old.CUSTOMER_ID;
END //
DELIMITER ;