สร้าง trigger ใหม่ด้วยคำสั่ง CREATE TRIGGER ไวยากรณ์:
CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW BEGIN ... END;
รายละเอียด:
- Trigger_name — ชื่อ trigger วางหลัง
CREATE TRIGGERแนะนำรูปแบบ[trigger_time]_[table_name]_[trigger_event]เช่นbefore_student_update - Trigger_time — เวลาทำงาน:
BEFORE(ก่อนเปลี่ยนแปลง) หรือAFTER(หลังเปลี่ยนแปลง) ต้องระบุเสมอ - Trigger_event — เหตุการณ์ที่กระตุ้น:
INSERT,UPDATE, หรือDELETEtrigger หนึ่งตัวต่อเหตุการณ์เดียว - Table_name — ชื่อตารางที่ trigger ผูกไว้ ระบุหลังคำว่า
ON - BEGIN...END — บล็อกกำหนดตรรกะการทำงานของ trigger
ตัวอย่าง
สร้างตาราง Student_age แล้วสร้าง trigger ก่อน INSERT หากอายุติดลบ ให้ตั้งเป็น 0:
mysql> Create table Student_age(age INT, Name Varchar(35)); Query OK, 0 rows affected (0.80 sec) mysql> DELIMITER // mysql> Create Trigger before_inser_studentage BEFORE INSERT ON student_age FOR EACH ROW BEGIN IF NEW.age < 0 THEN SET NEW.age = 0; END IF; END // Query OK, 0 rows affected (0.30 sec)
ทดสอบ trigger:
mysql> INSERT INTO Student_age(age, Name) values(30, 'Rahul'); Query OK, 1 row affected (0.14 sec) mysql> INSERT INTO Student_age(age, Name) values(-10, 'Harshit'); Query OK, 1 row affected (0.11 sec) mysql> Select * from Student_age; +------+---------+ | age | Name | +------+---------+ | 30 | Rahul | | 0 | Harshit | +------+---------+ 2 rows in set (0.00 sec)
แถวที่สอง INSERT อายุ -10 ถูก trigger เปลี่ยนเป็น 0 อัตโนมัติ