MySQL-এ টেবিলে ডেটা ইনসার্ট হওয়ার আগে অটোমেটিক্যালি বর্তমান তারিখ (CURDATE() বা NOW()) সেট করতে BEFORE INSERT TRIGGER ব্যবহার করা হয়।
উদাহরণ
১. টেবিল তৈরি করুন (DueDate DATETIME)
mysql> CREATE TABLE DemoTable1584 (DueDate DATETIME);
২. ট্রিগার তৈরি করুন
mysql> CREATE TRIGGER insertDate
-> BEFORE INSERT ON DemoTable1584
-> FOR EACH ROW SET NEW.DueDate = CURDATE();
৩. ডেটা ইনসার্ট করুন (DueDate দিয়ে না)
mysql> INSERT INTO DemoTable1584 VALUES();
mysql> INSERT INTO DemoTable1584 VALUES();
mysql> INSERT INTO DemoTable1584 VALUES();
৪. রেকর্ড দেখুন (সhibang CURDATE() দিয়ে সেট হয়েছে)
mysql> SELECT * FROM DemoTable1584;
আউটপুট (মান লইয়া: 2019-10-18):
+---------------------+
| DueDate |
+---------------------+
| 2019-10-18 00:00:00 |
| 2019-10-18 00:00:00 |
| 2019-10-18 00:00:00 |
+---------------------+
মূল পয়েন্ট:
BEFORE INSERT- ইনসার্ট হওয়ার ঠিক আগে ট্রিগার ফায়ার হয়।FOR EACH ROW- প্রতিটি রোর জন্য একবার।NEW.DueDate- ইনসার্ট হওয়া রোর DueDate কলামকে রেফার করে।CURDATE()- শুধু তারিখ (00:00:00),NOW()- তারিখ ও সময়।- ট্রিগার ড্রপ:
DROP TRIGGER insertDate;
সতর্কতা: ট্রিগার ওভারহেড যোগ করে। বাল্ক ইনসার্টে পারফরম্যান্স প্রভাবিত হতে পারে। ডিফল্ট ভ্যালু DEFAULT CURRENT_TIMESTAMP (MySQL 5.6.5+ DATETIME/TIMESTAMP-এ) ব্যবহার করলে ট্রিগার লাগে না।