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

MySQL-এ AFTER DELETE ট্রিগার বাস্তবায়ন (ডিলিট লগিং)

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 দিয়ে ডিলিট হওয়া রোয়ের মান পাওয়া যায়।

  1. MySQL ট্রিগারে 'FOR EACH ROW' কীভাবে কাজ করে?

  2. ট্রিগার এক্সিকিউশন সময় ত্রুটি কীভাবে হ্যান্ডেল করে MySQL?

  3. MySQL টেবিল থেকে ডুপ্লিকেট রেকর্ড কীভাবে মুছবেন?

  4. Python-এ MySQL INSERT করার পর আইডি কীভাবে পাবেন?