MySQL-Datenbankansichtstrigger und MySQL-Änderungs- und Löschtrigger (DROP TRIGGER)

MySQL-View-Trigger

Das Anzeigen von Triggern bezieht sich auf das Anzeigen der Definitions-, Status- und Syntaxinformationen von Triggern, die bereits in der Datenbank vorhanden sind. Zu den Methoden zum Anzeigen von Triggern in MySQL gehören die SHOW TRIGGERS-Anweisung und die Abfrage der Trigger-Datentabelle in der Datenbank information_schema. In diesem Abschnitt werden beide Methoden zum Anzeigen von Triggern beschrieben.

SHOW TRIGGERS-Anweisung zum Anzeigen von Triggerinformationen

In MySQL können Sie die grundlegenden Informationen von Triggern über die SHOW TRIGGERS-Anweisung anzeigen. Das Syntaxformat lautet wie folgt:

SHOW TRIGGERS;
Beispiel 1

Erstellen Sie zunächst ein Datentabellenkonto. Die Tabelle enthält zwei Felder, nämlich „acnum“ vom Typ „INT“ und „amount“ vom Typ „DECIMAL“. Die SQL-Anweisungen und Ausführungsergebnisse lauten wie folgt:

mysql> CREATE TABLE account(
    -> accnum INT(4),
    -> amount DECIMAL(10,2));
Query OK, 0 rows affected (0.49 sec)

Erstellen Sie einen Trigger mit dem Namen trigupdate und fügen Sie jedes Mal, wenn die Kontotabelle Daten aktualisiert, ein Datenelement in die myevent-Datentabelle ein. Die SQL-Anweisung und die Ausführungsergebnisse zum Erstellen der Datentabelle myevent lauten wie folgt:

mysql> CREATE TABLE myevent(
    -> id INT(11) DEFAULT NULL,
    -> evtname CHAR(20) DEFAULT NULL);
Query OK, 0 rows affected (0.26 sec)

Der SQL-Code zum Erstellen eines Trigupdate-Triggers lautet wie folgt:

mysql> CREATE TRIGGER trigupdate AFTER UPDATE ON account
    -> FOR EACH ROW INSERT INTO myevent VALUES(1,'after update');
Query OK, 0 rows affected (0.15 sec)

Verwenden Sie die SHOW TRIGGERS-Anweisung, um Trigger anzuzeigen (fügen Sie sie nach dem SHOW TRIGGERS-Befehl hinzu, \Gdamit die angezeigten Informationen besser organisiert sind). Die SQL-Anweisung und die Ausführungsergebnisse lauten wie folgt:

mysql> SHOW TRIGGERS \G
*************************** 1. row ***************************
             Trigger: trigupdate
               Event: UPDATE
               Table: account
           Statement: INSERT INTO myevent VALUES(1,'after update')
              Timing: AFTER
             Created: 2020-02-24 14:07:15.08
            sql_mode: STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
             Definer: root@localhost
character_set_client: gbk
collation_connection: gbk_chinese_ci
  Database Collation: latin1_swedish_ci
1 row in set (0.09 sec)

Die grundlegenden Informationen des Triggers können Sie den laufenden Ergebnissen entnehmen. Die Beschreibung der oben angezeigten Informationen lautet wie folgt:

  • Trigger stellt den Namen des Triggers dar, hier ist der Name des Triggers trigupdate;
  • Event stellt das Ereignis dar, das den Trigger aktiviert. Das Triggerereignis ist hier der Update-Vorgang UPDATE;
  • Tabelle stellt die Operationsobjekttabelle des aktivierten Triggers dar, hier ist es die Kontotabelle;
  • Die Anweisung stellt die vom Trigger ausgeführte Operation dar. Hier geht es darum, ein Datenelement in die Myevent-Datentabelle einzufügen.
  • Das Timing stellt den Zeitpunkt dar, zu dem der Trigger ausgelöst wird, hier nach dem Aktualisierungsvorgang (AFTER);
  • Es gibt auch einige andere Informationen, wie z. B. die Erstellungszeit des Triggers, den SQL-Modus, das Triggerdefinitionskonto und den Zeichensatz usw., die hier nicht einzeln vorgestellt werden.

Grundkenntnisse der MySQL-Datenbank, vollständige Übung icon-default.png?t=N7T8https://edu.csdn.net/course/detail/36210
Die SHOW TRIGGERS-Anweisung wird verwendet, um Informationen zu allen derzeit erstellten Triggern anzuzeigen. Da diese Anweisung den angegebenen Trigger nicht abfragen kann, ist es praktisch, diese Anweisung zu verwenden, wenn nur wenige Trigger vorhanden sind. Wenn Sie Informationen zu einem bestimmten Trigger anzeigen möchten oder die Datenbank viele Trigger enthält, können Sie diese direkt in der Trigger-Datentabelle in der Datenbank „information_schema“ durchsuchen.

Sehen Sie sich Triggerinformationen in der Triggertabelle an

In MySQL werden alle Triggerinformationen in der Triggertabelle der Datenbank information_schema gespeichert und können über den Abfragebefehl SELECT angezeigt werden. Die spezifische Syntax lautet wie folgt:

SELECT * FROM information_schema.triggers WHERE trigger_name= '触发器名';

Unter anderem '触发器名'wird es verwendet, um den Namen des anzuzeigenden Triggers anzugeben, und muss in einfache Anführungszeichen gesetzt werden. Diese Methode kann den angegebenen Trigger abfragen, was bequemer und flexibler zu verwenden ist.

Beispiel 2

Verwenden Sie den folgenden SELECT-Befehl, um den Trigupdate-Trigger anzuzeigen. Die SQL-Anweisung lautet wie folgt:

SELECT * FROM information_schema.triggers WHERE TRIGGER_NAME= 'trigupdate'\G

Der obige Befehl verwendet WHERE, um den Namen des Triggers anzugeben, der angezeigt werden muss. Die laufenden Ergebnisse lauten wie folgt:

mysql> SELECT * FROM information_schema.triggers WHERE TRIGGER_NAME= 'trigupdate'\G
*************************** 1. row ***************************
           TRIGGER_CATALOG: def
            TRIGGER_SCHEMA: test
              TRIGGER_NAME: trigupdate
        EVENT_MANIPULATION: UPDATE
      EVENT_OBJECT_CATALOG: def
       EVENT_OBJECT_SCHEMA: test
        EVENT_OBJECT_TABLE: account
              ACTION_ORDER: 1
          ACTION_CONDITION: NULL
          ACTION_STATEMENT: INSERT INTO myevent VALUES(1,'after update')
        ACTION_ORIENTATION: ROW
             ACTION_TIMING: AFTER
ACTION_REFERENCE_OLD_TABLE: NULL
ACTION_REFERENCE_NEW_TABLE: NULL
  ACTION_REFERENCE_OLD_ROW: OLD
  ACTION_REFERENCE_NEW_ROW: NEW
                   CREATED: 2020-02-24 16:07:15.08
                  SQL_MODE: STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
                   DEFINER: root@localhost
      CHARACTER_SET_CLIENT: gbk
      COLLATION_CONNECTION: gbk_chinese_ci
        DATABASE_COLLATION: latin1_swedish_ci
1 row in set (0.22 sec)

Die detaillierten Informationen zum Trigger können den Laufergebnissen entnommen werden. Die Beschreibung der oben angezeigten Informationen lautet wie folgt:

  • TRIGGER_SCHEMA gibt die Datenbank an, in der sich der Trigger befindet.
  • TRIGGER_NAME stellt den Namen des Triggers dar;
  • EVENT_OBJECT_TABLE gibt an, für welche Datentabelle es ausgelöst wird;
  • ACTION_STATEMENT stellt den spezifischen Vorgang dar, der ausgeführt wird, wenn der Trigger ausgelöst wird;
  • Der Wert von ACTION_ORIENTATION ist ROW, was bedeutet, dass es bei jedem Datensatz ausgelöst wird;
  • ACTION_TIMING gibt an, dass der auslösende Moment NACHHER liegt;
  • Es gibt auch einige andere Informationen, wie z. B. die Erstellungszeit des Triggers, den SQL-Modus, das Triggerdefinitionskonto und den Zeichensatz usw., die hier nicht einzeln vorgestellt werden.

 
Die obige SQL-Anweisung kann auch keinen Triggernamen angeben, sodass alle Trigger angezeigt werden. Die SQL-Anweisung lautet wie folgt:

SELECT * FROM information_schema.triggers \G

Diese Anweisung zeigt alle Triggerinformationen in der Triggerdatentabelle an.

MySQL-Trigger zum Ändern und Löschen (DROP TRIGGER)

Sie können einen Trigger ändern, indem Sie den ursprünglichen Trigger löschen und einen neuen Trigger mit demselben Namen erstellen.

Grundgrammatik

Wie andere  MySQL-  Datenbankobjekte können Trigger mithilfe der DROP-Anweisung aus der Datenbank entfernt werden.

Das Syntaxformat ist wie folgt:

DROP TRIGGER [ IF EXISTS ] [数据库名] <触发器名>

Die Syntax wird wie folgt erklärt:

1) Triggername

Der Name des zu löschenden Triggers.

2) Datenbankname

Optional. Gibt den Namen der Datenbank an, in der sich der Trigger befindet. Wenn nicht angegeben, handelt es sich um die aktuelle Standarddatenbank.

3) Berechtigungen

Zur Ausführung der DROP TRIGGER-Anweisung ist die SUPER-Berechtigung erforderlich.

4) WENN EXISTIERT

Optional. Vermeiden Sie das Löschen von Triggern ohne Trigger.

注意:删除一个表的同时,也会自动删除该表上的触发器。另外,触发器不能更新或覆盖,为了修改一个触发器,必须先删除它,再重新创建。

Trigger löschen

Verwenden Sie die DROP TRIGGER-Anweisung, um Trigger zu löschen, die in MySQL definiert wurden.

[Beispiel] Löschen Sie den Double_salary-Trigger. Die Eingabe-SQL-Anweisung und der Ausführungsprozess sind wie folgt.

mysql> DROP TRIGGER double_salary;
Query OK, 0 rows affected (0.03 sec)

Nach dem Löschen des double_salary-Triggers ändern sich die Daten in der Datentabelle tb_emp7 beim erneuten Einfügen von Datensätzen in die Datentabelle tb_emp6 nicht mehr, wie unten gezeigt.

mysql> INSERT INTO tb_emp6
    -> VALUES (3,'C',1,200);
Query OK, 1 row affected (0.09 sec)
mysql> SELECT * FROM tb_emp6;
+----+------+--------+--------+
| id | name | deptId | salary |
+----+------+--------+--------+
|  1 | A    |      1 |   1000 |
|  2 | B    |      1 |    500 |
|  3 | C    |      1 |    200 |
+----+------+--------+--------+
3 rows in set (0.00 sec)
mysql> SELECT * FROM tb_emp7;
+----+------+--------+--------+
| id | name | deptId | salary |
+----+------+--------+--------+
|  1 | A    |      1 |   2000 |
|  2 | B    |      1 |   1000 |
+----+------+--------+--------+
2 rows in set (0.00 sec)

Dachang Senior Database Engineer MySQL-Datenbank-Praktikum icon-default.png?t=N7T8https://edu.csdn.net/course/detail/39021

Ich denke du magst

Origin blog.csdn.net/m0_37449634/article/details/135553763
Empfohlen
Rangfolge