Computer >> Máy Tính >  >> Lập trình >> MySQL

Kích hoạt kích hoạt sau khi thao tác DELETE được thực thi trong MySQL


Sử dụng SAU KHI XÓA để kích hoạt trình kích hoạt sau khi thao tác XÓA được thực thi. Sau đây là cú pháp -

DELIMITER //
   CREATE TRIGGER yourTriggerName
      AFTER DELETE
      ON yourTableName FOR EACH ROW
      BEGIN
      yourStatement1,
      .
      .
      N
   END;
   //

Đầu tiên chúng ta hãy tạo một bảng -

mysql> create table DemoTable(Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,FirstName varchar(100));
Query OK, 0 rows affected (0.62 sec)

Chèn một số bản ghi vào bảng bằng lệnh chèn -

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)

Hiển thị tất cả các bản ghi từ bảng bằng câu lệnh select -

mysql> select *from DemoTable;

Điều này sẽ tạo ra kết quả sau -

+----+-----------+
| Id | FirstName |
+----+-----------+
| 1  | John      |
| 2  | Mike      |
+----+-----------+
2 rows in set (0.00 sec)

Sau đây là truy vấn để tạo trình kích hoạt và sử dụng SAU KHI XÓA -

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 ;

Để kiểm tra trình kích hoạt có hoạt động hay không, hãy xóa bản ghi đầu tiên khỏi bảng -

mysql> delete from DemoTable where Id=1;
Query OK, 1 row affected (0.26 sec)

Ở trên, chúng tôi đã xóa bản ghi đầu tiên khỏi bảng. Điều này có nghĩa là trình kích hoạt phải hoạt động sau khi lệnh DELETE được sử dụng -

mysql> select @userName;

Điều này sẽ tạo ra kết quả sau -

+----------------+
| @userName      |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

Nó hiển thị thời gian hiện tại bất cứ khi nào trình kích hoạt hoạt động -

mysql> select @deleteDatetime;

Điều này sẽ tạo ra kết quả sau -

+---------------------+
| @deleteDatetime     |
+---------------------+
| 2019-07-09 21:06:31 |
+---------------------+
1 row in set (0.00 sec)