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

MySQL ট্রিগার কীভাবে তৈরি ও ব্যবহার করবেন?


নতুন ট্রিগার তৈরি করতে CREATE TRIGGER স্টেটমেন্ট ব্যবহার করতে হয়। এর সিনট্যাক্স নিচের মতো:

CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW BEGIN ... END;

এখানে,

  • Trigger_name হলো ট্রিগারের নাম, যা CREATE TRIGGER স্টেটমেন্টের পরে লিখতে হয়। নামকরণ কনভেনশন হতে পারে [trigger time]_[table name]_[trigger event]। যেমন: before_student_update বা after_student_insert।
  • Trigger_time হলো ট্রিগার এক্টিভেশন টাইম, যা BEFORE বা AFTER হতে পারে। ট্রিগার ডিফাইন করার সময় এক্টিভেশন টাইম স্পেসিফাই করতে হয়। টেবিলে পরিবর্তন হওয়ার পূর্বে একশন প্রসেস করতে চাইলে BEFORE এবং পরিবর্তনের পরে চাইলে AFTER ব্যবহার করুন।
  • Trigger_event হতে পারে INSERT, UPDATE, বা DELETE। এই ইভেন্ট ট্রিগারকে আহ্বান করে। একটি ট্রিগার শুধু একটি ইভেন্ট দ্বারা আহ্বান হয়। একাধিক ইভেন্ট দ্বারা আহ্বান হওয়ার ট্রিগার ডিফাইন করতে হলে প্রতিটি ইভেন্টের জন্য আলাদা ট্রিগার ডিফাইন করতে হয়।
  • Table_name হলো টেবিলের নাম। আসলে একটি ট্রিগার সবসময় একটি নির্দিষ্ট টেবিলের সাথে যুক্ত থাকে। টেবিল ছাড়া ট্রিগার থাকবে না, তাই 'ON' কীওয়ার্ডের পরে টেবিলের নাম স্পেসিফাই করতে হয়।
  • BEGIN…END হলো ব্লক যেখানে ট্রিগারের লজিক ডিফাইন করা হয়।

উদাহরণ

মান লিইয়ে আমরা 'Student_age' টেবিলে ট্রিগার প্রয়োগ করতে চাই, যা নিচের মতো তৈরি করা হয়েছে:

mysql> Create table Student_age(age INT, Name Varchar(35)); 
Query OK, 0 rows affected (0.80 sec)

নিচের ট্রিগার স্বয়ংক্রিয়ভাবে age = 0 ইনসার্ট করবে যদি কেউ age < 0 ইনসার্ট করার চেষ্টা করে।

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)

এখন এই ট্রিগার আহ্বান করতে নিচের স্টেটমেন্টগুলো ব্যবহার করা যাবে:

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)

উপরের ফলাফল দেখাচ্ছে যে টেবিলে নেগেটিভ ভ্যালু ইনসার্ট করলে ট্রিগার দ্বারা 0 ইনসার্ট হয়েছে।

উপরের উদাহরণটি trigger_event হিসেবে INSERT এবং trigger_time হিসেবে BEFORE-র একটি ট্রিগার।


  1. MySQL-এ একই কোয়েরিতে WHERE, AND ও OR একসাথে ব্যবহার

  2. MySQL-এ CREATE TABLE-এ CHAR_LENGTH() ব্যবহার করে কলামের ক্যারেক্টার কাউন্ট সংরক্ষণ

  3. MySQL-এ COUNT() এবং IF() একসাথে ব্যবহার করে শর্তসাপেক্ষ গুননা

  4. TikTok Avatar তৈরি ও ব্যবহার করার ধাপে ধাপে গাইড