কম্পিউটার টিউটোরিয়াল

MySQL-এ একই ট্রিগার ইভেন্ট ও অ্যাকশন টাইমের জন্য একাধিক ট্রিগার কীভাবে তৈরি করবেন?


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)

  1. MySQL-এ সকল ট্রিগার ও বর্তমান ডেটাবেসের ট্রিগার লিস্ট করা

  2. MySQL বুলিয়ান কলাম তৈরি করা এবং একই কলাম পরিবর্তন করার সময় ডিফল্ট মান ১ নির্ধারণ করা

  3. MySQL-এ একসাথে একাধিক রো ইনসার্ট করা (Multi-row INSERT)

  4. Tkinter-এ একসাথে একাধিক ক্যানভাস প্রদর্শন করার পদ্ধতি