Activadores de vista de base de datos MySQL y activadores de modificación y eliminación de MySQL (DROP TRIGGER)

Activador de vista MySQL

Ver disparadores se refiere a ver la definición, el estado y la información de sintaxis de los disparadores que ya existen en la base de datos. Los métodos para ver los disparadores en MySQL incluyen la declaración SHOW TRIGGERS y la consulta de la tabla de datos de los disparadores en la base de datos information_schema. Esta sección detalla ambos métodos de visualización de activadores.

MOSTRAR TRIGGERS declaración para ver información de activación

En MySQL, puede ver la información básica de los activadores a través de la declaración SHOW TRIGGERS, el formato de sintaxis es el siguiente:

SHOW TRIGGERS;
Ejemplo 1

Primero cree una cuenta de tabla de datos. Hay dos campos en la tabla, a saber, cuenta de tipo INT y cantidad de tipo DECIMAL. Las declaraciones SQL y los resultados de ejecución son los siguientes:

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

Cree un activador llamado trigupdate e inserte un dato en la tabla de datos myevent cada vez que la tabla de cuentas actualice los datos. La declaración SQL y los resultados de la ejecución para crear la tabla de datos myevent son los siguientes:

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

El código SQL para crear un disparador de actualización trigonométrica es el siguiente:

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)

Utilice la instrucción SHOW TRIGGERS para ver los disparadores (agréguela después del comando SHOW TRIGGERS \Gpara que la información mostrada esté más organizada). La instrucción SQL y los resultados de ejecución son los siguientes:

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)

Puede ver la información básica del activador en los resultados de ejecución. La descripción de la información mostrada arriba es la siguiente:

  • Trigger representa el nombre del disparador, aquí el nombre del disparador es trigupdate;
  • El evento representa el evento que activa el disparador. El evento desencadenante aquí es la operación de actualización ACTUALIZAR;
  • La tabla representa la tabla de objetos de operación del disparador activado, aquí está la tabla de cuentas;
  • La declaración representa la operación realizada por el disparador, aquí es insertar un dato en la tabla de datos de myevent;
  • El tiempo representa el momento en que se activa el disparador, aquí es después de la operación de actualización (DESPUÉS);
  • También hay otra información, como la hora de creación del activador, el modo SQL, la cuenta de definición del activador y el juego de caracteres, etc., que no se introducirán una por una aquí.

Práctica completa de habilidades básicas de la base de datos MySQL icono-default.png?t=N7T8https://edu.csdn.net/course/detail/36210
La declaración SHOW TRIGGERS se utiliza para ver información sobre todos los activadores creados actualmente. Debido a que esta declaración no puede consultar el activador especificado, es conveniente utilizarla cuando hay pocos activadores. Si desea ver información sobre un activador específico o hay muchos activadores en la base de datos, puede buscarlo directamente desde la tabla de datos de activadores en la base de datos information_schema.

Ver información de desencadenadores en la tabla de desencadenadores

En MySQL, toda la información de activación se almacena en la tabla de activadores de la base de datos information_schema y se puede ver mediante el comando de consulta SELECT. La sintaxis específica es la siguiente:

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

Entre ellos, '触发器名'se utiliza para especificar el nombre del activador que se va a ver y debe estar entre comillas simples. Este método puede consultar el activador especificado, que es más conveniente y flexible de usar.

Ejemplo 2

Utilice el siguiente comando SELECT para ver el disparador de actualización. La declaración SQL es la siguiente:

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

El comando anterior usa WHERE para especificar el nombre del activador que debe verse. Los resultados de la ejecución son los siguientes:

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)

La información detallada del disparador se puede ver en los resultados de ejecución. La descripción de la información mostrada arriba es la siguiente:

  • TRIGGER_SCHEMA indica la base de datos donde se encuentra el disparador;
  • TRIGGER_NAME representa el nombre del activador;
  • EVENT_OBJECT_TABLE indica en qué tabla de datos se activa;
  • ACTION_STATEMENT representa la operación específica realizada cuando se activa el disparador;
  • El valor de ACTION_ORIENTATION es ROW, lo que significa que se activa en cada registro;
  • ACTION_TIMING indica que el momento desencadenante es DESPUÉS;
  • También hay otra información, como la hora de creación del activador, el modo SQL, la cuenta de definición del activador y el juego de caracteres, etc., que no se introducirán una por una aquí.

 
La declaración SQL anterior tampoco puede especificar el nombre del activador, por lo que se verán todos los activadores. La declaración SQL es la siguiente:

SELECT * FROM information_schema.triggers \G

Esta declaración mostrará toda la información de activación en la tabla de datos de activación.

MySQL modifica y elimina activadores (DROP TRIGGER)

Puede modificar un activador eliminando el activador original y creando un activador nuevo con el mismo nombre.

gramática básica

Al igual que otros  objetos de la base de datos MySQL  , los desencadenantes se pueden eliminar de la base de datos mediante la declaración DROP.

El formato de sintaxis es el siguiente:

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

La sintaxis se explica a continuación:

1) Nombre del activador

El nombre del desencadenador que se va a eliminar.

2) Nombre de la base de datos

Opcional. Especifica el nombre de la base de datos donde reside el desencadenador. Si no se especifica, es la base de datos predeterminada actual.

3) Permisos

Se requiere autorización SUPER para ejecutar la instrucción DROP TRIGGER.

4) SI EXISTE

Opcional. Evite eliminar disparadores sin disparadores.

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

eliminar disparador

Utilice la instrucción DROP TRIGGER para eliminar activadores que se han definido en MySQL.

[Ejemplo] Eliminar el disparador double_salary. La declaración SQL de entrada y el proceso de ejecución son los siguientes.

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

Después de eliminar el activador double_salary, al insertar registros en la tabla de datos tb_emp6 nuevamente, los datos en la tabla de datos tb_emp7 ya no cambian, como se muestra a continuación.

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)

Capacitación práctica de base de datos mysql de ingeniero senior de bases de datos de Dachang icono-default.png?t=N7T8https://edu.csdn.net/course/detail/39021

Supongo que te gusta

Origin blog.csdn.net/m0_37449634/article/details/135553763
Recomendado
Clasificación