MySQL-এ AFTER DELETE ট্রিগার ব্যবহার করে ডিলিট অপারেশনের পর অটোমেটিকলি অ্যাকশন (যেমন: লগিং) করা যায়।
সিনট্যাক্স
DELIMITER //
CREATE TRIGGER আপনার_ট্রিগার_নাম
AFTER DELETE ON আপনার_টেবিল
FOR EACH ROW
BEGIN
-- আপনার স্টেটমেন্টসমূহ
END; //
DELIMITER ;
উদাহরণ: ডিলিট করা ইউজার ও টাইম লগ
mysql> CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
FirstName VARCHAR(100)
);
Query OK, 0 rows affected (0.62 sec)
mysql> INSERT INTO DemoTable (FirstName) VALUES ('John'), ('Mike');
Query OK, 2 rows affected
ট্রিগার তৈরি
mysql> DELIMITER //
mysql> CREATE TRIGGER history_of_Table
AFTER DELETE ON DemoTable
FOR EACH ROW
BEGIN
SELECT USER() INTO @userName;
SELECT NOW() INTO @deleteDatetime;
END; //
Query OK, 0 rows affected (0.18 sec)
mysql> DELIMITER ;
টেস্ট: রো ডিলিট
mysql> DELETE FROM DemoTable WHERE Id = 1; Query OK, 1 row affected (0.26 sec)
ট্রিগার ভেরিয়েবল চেক
mysql> SELECT @userName;
+----------------+ | @userName | +----------------+ | root@localhost | +----------------+
mysql> SELECT @deleteDatetime;
+---------------------+ | @deleteDatetime | +---------------------+ | 2019-07-09 21:06:31 | +---------------------+
ব্যবহার ক্ষেত্র
- অডিট লগ (কে, কখন, কী ডিলিট করল)
- আর্কাইভ টেবিলে ডিলিটেড রো কপি
- ক্যাশে ইনভ্যালিডেশন
- রিলেটেড ডেটা ক্লিনআপ (CASCADE বিকল্প)
OLD.* অ্যাক্সেস
ট্রিগার ভেতরে OLD.col_name দিয়ে ডিলিট হওয়া রোয়ের মান পাওয়া যায়।