Wenn wir die damit verbundene Tabelle zerstören, wird auch der Auslöser zerstört. Dies wird als explizite Zerstörung des Auslösers bezeichnet. Es kann anhand eines Beispiels verstanden werden:
Angenommen, wir haben einen Trigger mit dem Namen „trigger_before_delete_sample“ für eine Tabelle mit dem Namen „Sample“. Wenn wir nun die Tabelle löschen, werden auch die oben genannten, mit der Tabelle verknüpften Trigger gelöscht.
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 sql_mode: ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION Definer: root@localhost character_set_client: cp850 collation_connection: cp850_general_ci Database Collation: latin1_swedish_ci *************************** 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 sql_mode: ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION Definer: root@localhost character_set_client: cp850 collation_connection: cp850_general_ci Database Collation: latin1_swedish_ci 2 rows in set (0.01 sec)
Die obige Ergebnismenge zeigt, dass es zwei Trigger in der Datenbank gibt, von denen einer mit der Tabelle namens „Sample“ verknüpft ist. Mit Hilfe der folgenden Anweisung löschen wir nun die Tabelle -
mysql> DROP table sample; Query OK, 0 rows affected (0.26 sec)
Jetzt können wir mit Hilfe der folgenden Anweisung sehen, dass auch die mit der Tabelle „Sample“ verknüpften Trigger zerstört werden.
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 sql_mode: ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION Definer: root@localhost character_set_client: cp850 collation_connection: cp850_general_ci Database Collation: latin1_swedish_ci 1 row in set (0.01 sec)
Das obige ist der detaillierte Inhalt vonWas passiert mit dem Trigger, wenn wir die Tabelle löschen, die diesen Trigger enthält?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!