Heim  >  Artikel  >  Datenbank  >  Was passiert mit dem Trigger, wenn wir die Tabelle löschen, die diesen Trigger enthält?

Was passiert mit dem Trigger, wenn wir die Tabelle löschen, die diesen Trigger enthält?

WBOY
WBOYnach vorne
2023-09-01 16:41:10913Durchsuche

Was passiert mit dem Trigger, wenn wir die Tabelle löschen, die diesen Trigger enthält?

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:

Beispiel

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen