MySQL 5.7.2+ รองรับหลาย trigger ต่อ event/timing เดียวกัน ทำงานตามลำดับ ตัวอย่างสร้าง 2 trigger BEFORE UPDATE บนตาราง Student_detail:
ตัวอย่าง
ข้อมูลตาราง Student_detail:
mysql> Select * from Student_detail; +-----------+-------------+------------+ | Studentid | StudentName | address | +-----------+-------------+------------+ | 100 | Gaurav | Delhi | | 101 | Raman | Shimla | | 103 | Rahul | Jaipur | | 104 | Ram | Chandigarh | | 105 | Mohan | Chandigarh | +-----------+-------------+------------+ 5 rows in set (0.06 sec) mysql> Delimiter //
Trigger แรก studentdetail_before_update บันทึกการแก้ไข:
mysql> Create Trigger studentdetail_before_update
-> BEFORE UPDATE
-> ON Student_detail
-> FOR EACH ROW
-> BEGIN
-> DECLARE AUSER Varchar(40);
-> SELECT USER() into AUSER;
-> INSERT INTO Student_detail_updated(studentid, Updated_date,Updated_by) values(OLD.studentid,NOW(),AUSER);
-> END; //
Query OK, 0 rows affected (0.17 sec)
mysql> Update student_detail SET Address = 'Ludhiana' Where studentName = 'Ram';
Query OK, 1 row affected (0.15 sec)
ผลลัพธ์ 1 แถวใน student_detail_updated
Trigger ที่สอง studentdetail_before_update2 ใช้ FOLLOWS ทำงานหลัง trigger แรก:
mysql> Create Trigger studentdetail_before_update2
-> BEFORE UPDATE
-> ON Student_detail
-> FOR EACH ROW FOLLOWS studentdetail_before_update
-> BEGIN
-> DECLARE AUSER Varchar(40);
-> SELECT USER() into AUSER;
-> INSERT INTO Student_detail_updated(studentid, Updated_date,Updated_by) values(OLD.studentid,NOW(),AUSER);
-> END; //
Query OK, 0 rows affected (0.15 sec)
UPDATE อีกครั้ง:
mysql> Update Student_detail SET Address = 'Patiala' WHERE studentname = 'Mohan'; Query OK, 1 row affected (0.08 sec)
ตอนนี้ student_detail_updated มี 3 แถว: 1 จาก trigger แรก, 2 จาก trigger ที่สอง (ทำงานซ้อนกัน):
mysql> Select * from student_detail_updated; +-----------+---------------------+----------------+ | studentid | Updated_date | Updated_by | +-----------+---------------------+----------------+ | 104 | 2017-11-22 16:17:16 | root@localhost | | 105 | 2017-11-22 16:19:28 | root@localhost | | 105 | 2017-11-22 16:19:28 | root@localhost | +-----------+---------------------+----------------+ 3 rows in set (0.00 sec)