MySQL 5.7.2+ একই ইভেন্ট এবং অ্যাকশন টাইমের জন্য একাধিক ট্রিগার তৈরি করার অনুমতি দেয়। দুটি ট্রিগারই ইভেন্ট ঘটলে সিকোয়েনশিয়ালি এক্টিভেট হবে। নিচের উদাহরণ:
উদাহরণ
এই উদাহরণে BEFORE UPDATE ইভেন্টের জন্য দুটি ট্রিগার তৈরি করা হচ্ছে: 'Studentdetail_before_update' এবং 'Studentdetail_before_update2'। সিকোয়েনশিয়ালি এক্টিভেট হবে। '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 //
প্রথম ট্রিগার তৈরি:
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) Rows matched: 1 Changed: 1 Warnings: 0
উপরের ট্রিগার আহ্বান করার পর ফলাফল:
mysql> Select * from student_detail_updated; +-----------+---------------------+----------------+ | studentid | Updated_date | Updated_by | +-----------+---------------------+----------------+ | 104 | 2017-11-22 16:17:16 | root@localhost | +-----------+---------------------+----------------+ 1 row in set (0.00 sec)
দ্বিতীয় ট্রিগার তৈরি (FOLLOWS দিয়ে প্রথম ট্রিগারের পরে):
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)
এখন আপডেট করলে দুটি ট্রিগার সিকোয়েনশিয়ালি ফায়ার হবে:
mysql> Update Student_detail SET Address = 'Patiala' WHERE studentname = 'Mohan'; Query OK, 1 row affected (0.08 sec) Rows matched: 1 Changed: 1 Warnings: 0
ফলাফলে একই ইভেন্টের জন্য দুটি সারি দেখা যাচ্ছে:
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)