Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Điều gì xảy ra với trigger khi xóa bảng chứa trigger đó?

Trigger cũng sẽ bị xóa nếu xóa bảng gắn với nó. Đây gọi là xóa trigger ngầm (implicit destroy). Ví dụ:

Ví dụ

Giả sử có trigger trigger_before_delete_sample trên bảng Sample. Xóa bảng này thì trigger cũng bị xóa.

mysql> Show Triggers\G
*************************** 1. row ***************************
Trigger: trigger_before_delete_sample
Event: DELETE
Table: sample
Statement: BEGIN SET @count = if (@count IS NULL, 1, (@count+1)); INSERT INTO sample_rowaffected values (@count); END
Timing: BEFORE
Created: 2017-11-21 12:31:58.70
...
*************************** 2. row ***************************
Trigger: before_inser_studentage
Event: INSERT
Table: student_age
Statement: IF NEW.age < 0 THEN SET NEW.age = 0; END IF
Timing: BEFORE
Created: 2017-11-21 11:26:15.34
...
2 rows in set (0.01 sec)

Xóa bảng sample:

mysql> DROP table sample;
Query OK, 0 rows affected (0.26 sec)

Kiểm tra lại trigger:

mysql> Show Triggers\G
*************************** 1. row ***************************
Trigger: before_inser_studentage
Event: INSERT
Table: student_age
Statement: IF NEW.age < 0 THEN SET NEW.age = 0; END IF
Timing: BEFORE
Created: 2017-11-21 11:26:15.34
...
1 row in set (0.01 sec)

Trigger gắn với sample đã bị xóa theo.