Déclencheurs d'affichage de la base de données MySQL et déclencheurs de modification et de suppression MySQL (DROP TRIGGER)

Déclencheur de vue MySQL

L'affichage des déclencheurs fait référence à l'affichage des informations de définition, d'état et de syntaxe des déclencheurs qui existent déjà dans la base de données. Les méthodes permettant d'afficher les déclencheurs dans MySQL incluent l'instruction SHOW TRIGGERS et l'interrogation de la table de données des déclencheurs sous la base de données information_schema. Cette section détaille les deux méthodes d'affichage des déclencheurs.

Instruction SHOW TRIGGERS pour afficher les informations sur le déclencheur

Dans MySQL, vous pouvez afficher les informations de base des déclencheurs via l'instruction SHOW TRIGGERS. Le format de syntaxe est le suivant :

SHOW TRIGGERS;
Exemple 1

Créez d'abord un compte de table de données. Il y a deux champs dans la table, à savoir le compte de type INT et le montant de type DECIMAL. Les instructions SQL et les résultats d'exécution sont les suivants :

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

Créez un déclencheur nommé trigupdate et insérez une donnée dans la table de données myevent chaque fois que la table de compte met à jour les données. L'instruction SQL et les résultats d'exécution pour créer la table de données myevent sont les suivants :

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

Le code SQL pour créer un déclencheur trigupdate est le suivant :

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)

Utilisez l'instruction SHOW TRIGGERS pour afficher les déclencheurs (ajoutez-la après la commande SHOW TRIGGERS \Gafin que les informations affichées soient plus organisées). L'instruction SQL et les résultats d'exécution sont les suivants :

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)

Vous pouvez voir les informations de base du déclencheur à partir des résultats en cours d'exécution. La description des informations affichées ci-dessus est la suivante :

  • Trigger représente le nom du déclencheur, ici le nom du déclencheur est trigupdate ;
  • L'événement représente l'événement qui active le déclencheur. L'événement déclencheur ici est l'opération de mise à jour UPDATE ;
  • Table représente la table des objets d'opération du déclencheur activé, ici c'est la table des comptes ;
  • L'instruction représente l'opération effectuée par le déclencheur, ici il s'agit d'insérer une donnée dans la table de données myevent ;
  • Le timing représente l'heure à laquelle le déclencheur est déclenché, ici c'est après l'opération de mise à jour (AFTER) ;
  • Il existe également d'autres informations, telles que l'heure de création du déclencheur, le mode SQL, le compte de définition du déclencheur et le jeu de caractères, etc., qui ne seront pas présentées une par une ici.

Compétences de base de la base de données Mysql pratique complète icon-default.png?t=N7T8https://edu.csdn.net/course/detail/36210
L'instruction SHOW TRIGGERS est utilisée pour afficher des informations sur tous les déclencheurs actuellement créés. Étant donné que cette instruction ne peut pas interroger le déclencheur spécifié, il est pratique de l'utiliser lorsqu'il existe peu de déclencheurs. Si vous souhaitez afficher des informations sur un déclencheur spécifique ou s'il existe de nombreux déclencheurs dans la base de données, vous pouvez les rechercher directement dans la table de données des déclencheurs de la base de données information_schema.

Afficher les informations sur les déclencheurs dans le tableau des déclencheurs

Dans MySQL, toutes les informations de déclenchement sont stockées dans la table des déclencheurs de la base de données information_schema et peuvent être visualisées via la commande de requête SELECT. La syntaxe spécifique est la suivante :

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

Parmi eux, '触发器名'il est utilisé pour spécifier le nom du déclencheur à afficher et doit être placé entre guillemets simples. Cette méthode peut interroger le déclencheur spécifié, ce qui est plus pratique et plus flexible à utiliser.

Exemple 2

Utilisez la commande SELECT ci-dessous pour afficher le déclencheur trigupdate. L'instruction SQL est la suivante :

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

La commande ci-dessus utilise WHERE pour spécifier le nom du déclencheur qui doit être affiché. Les résultats d'exécution sont les suivants :

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)

Les informations détaillées du déclencheur peuvent être consultées à partir des résultats en cours d'exécution. La description des informations affichées ci-dessus est la suivante :

  • TRIGGER_SCHEMA indique la base de données où se trouve le déclencheur ;
  • TRIGGER_NAME représente le nom du déclencheur ;
  • EVENT_OBJECT_TABLE indique sur quelle table de données il est déclenché ;
  • ACTION_STATEMENT représente l'opération spécifique effectuée lorsque le déclencheur est déclenché ;
  • La valeur de ACTION_ORIENTATION est ROW, ce qui signifie qu'elle est déclenchée à chaque enregistrement ;
  • ACTION_TIMING indique que le moment déclencheur est APRES ;
  • Il existe également d'autres informations, telles que l'heure de création du déclencheur, le mode SQL, le compte de définition du déclencheur et le jeu de caractères, etc., qui ne seront pas présentées une par une ici.

 
L'instruction SQL ci-dessus ne peut pas non plus spécifier le nom du déclencheur, afin que tous les déclencheurs soient affichés. L'instruction SQL est la suivante :

SELECT * FROM information_schema.triggers \G

Cette instruction affichera toutes les informations sur les déclencheurs dans le tableau de données des déclencheurs.

Déclencheurs de modification et de suppression MySQL (DROP TRIGGER)

Vous pouvez modifier un déclencheur en supprimant le déclencheur d'origine et en créant un nouveau déclencheur portant le même nom.

grammaire de base

Comme les autres  objets de base de données MySQL  , les déclencheurs peuvent être supprimés de la base de données à l'aide de l'instruction DROP.

Le format de syntaxe est le suivant :

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

La syntaxe est expliquée comme suit :

1) Nom du déclencheur

Le nom du déclencheur à supprimer.

2) Nom de la base de données

Facultatif. Spécifie le nom de la base de données où réside le déclencheur. Si elle n'est pas spécifiée, il s'agit de la base de données par défaut actuelle.

3) Autorisations

L'autorité SUPER est requise pour exécuter l'instruction DROP TRIGGER.

4) SI EXISTE

Facultatif. Évitez de supprimer des déclencheurs sans déclencheurs.

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

supprimer le déclencheur

Utilisez l'instruction DROP TRIGGER pour supprimer les déclencheurs définis dans MySQL.

[Exemple] Supprimez le déclencheur double_salary. L'instruction SQL d'entrée et le processus d'exécution sont les suivants.

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

Après la suppression du déclencheur double_salary, lors de l'insertion à nouveau d'enregistrements dans la table de données tb_emp6, les données de la table de données tb_emp7 ne changent plus, comme indiqué ci-dessous.

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)

Formation pratique de base de données mysql d'ingénieur senior de base de données Dachang icon-default.png?t=N7T8https://edu.csdn.net/course/detail/39021

Je suppose que tu aimes

Origine blog.csdn.net/m0_37449634/article/details/135553763
conseillé
Classement