MySQL में AFTER DELETE ट्रिगर बनाना
DELETE ऑपरेशन के बाद स्वचालित रूप से कोड चलाने के लिए AFTER DELETE ट्रिगर का उपयोग करें।
सिंटैक्स
DELIMITER //
CREATE TRIGGER yourTriggerName
AFTER DELETE ON yourTableName
FOR EACH ROW
BEGIN
yourStatement1;
...
yourStatementN;
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');
Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO DemoTable(FirstName) VALUES('Mike');
Query OK, 1 row affected (0.12 sec)
ट्रिगर बनाना
यह ट्रिगर डिलीट करने वाले उपयोगकर्ता और समय को उपयोगकर्ता-परिभाषित चरों में संग्रहीत करता है:
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 | +----------------+ 1 row in set (0.00 sec)
mysql> SELECT @deleteDatetime;
+---------------------+ | @deleteDatetime | +---------------------+ | 2019-07-09 21:06:31 | +---------------------+ 1 row in set (0.00 sec)
महत्वपूर्ण: FOR EACH ROW का अर्थ है ट्रिगर प्रत्येक डिलीट की गई पंक्ति के लिए एक बार चलता है। OLD कीवर्ड से डिलीट की गई पंक्ति के मान प्राप्त कर सकते हैं (उदा. OLD.Id)।