Gatilhos de visualização do banco de dados MySQL e gatilhos de modificação e exclusão do MySQL (DROP TRIGGER)

Gatilho de visualização MySQL

A visualização de gatilhos refere-se à visualização das informações de definição, status e sintaxe de gatilhos que já existem no banco de dados. Os métodos para visualizar gatilhos no MySQL incluem a instrução SHOW TRIGGERS e a consulta da tabela de dados de gatilhos no banco de dados information_schema. Esta seção detalha ambos os métodos de visualização de gatilhos.

Instrução SHOW TRIGGERS para visualizar informações do gatilho

No MySQL, você pode visualizar as informações básicas dos gatilhos através da instrução SHOW TRIGGERS. O formato da sintaxe é o seguinte:

SHOW TRIGGERS;
Exemplo 1

Primeiro crie uma conta na tabela de dados.Existem dois campos na tabela, nomeadamente acnum do tipo INT e quantidade do tipo DECIMAL. As instruções SQL e os resultados da execução são os seguintes:

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

Crie um gatilho chamado trigupdate e insira um dado na tabela de dados myevent sempre que a tabela de contas atualizar os dados. A instrução SQL e os resultados da execução para criar a tabela de dados myevent são os seguintes:

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

O código SQL para criar um gatilho trigupdate é o seguinte:

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)

Use a instrução SHOW TRIGGERS para visualizar os gatilhos (adicione-a após o comando SHOW TRIGGERS \Gpara que as informações exibidas fiquem mais organizadas).A instrução SQL e os resultados da execução são os seguintes:

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)

Você pode ver as informações básicas do gatilho nos resultados da execução. A descrição das informações exibidas acima é a seguinte:

  • Trigger representa o nome do gatilho, aqui o nome do gatilho é trigupdate;
  • Evento representa o evento que ativa o gatilho. O evento gatilho aqui é a operação de atualização UPDATE;
  • Tabela representa a tabela de objetos de operação do gatilho ativado, aqui é a tabela de contas;
  • A instrução representa a operação realizada pelo gatilho, aqui é para inserir um dado na tabela de dados myevent;
  • O tempo representa o momento em que o gatilho é acionado, aqui é após a operação de atualização (AFTER);
  • Há também algumas outras informações, como o horário de criação do gatilho, modo SQL, conta de definição do gatilho e conjunto de caracteres, etc., que não serão introduzidas uma por uma aqui.

Prática completa de habilidades básicas do banco de dados MySQL icon-default.png?t=N7T8https://edu.csdn.net/course/detail/36210
A instrução SHOW TRIGGERS é usada para visualizar informações sobre todos os gatilhos criados atualmente. Como esta instrução não pode consultar o gatilho especificado, é conveniente usá-la quando houver poucos gatilhos. Se desejar visualizar informações sobre um gatilho específico ou se houver muitos gatilhos no banco de dados, você poderá pesquisá-lo diretamente na tabela de dados de gatilhos no banco de dados information_schema.

Ver informações do gatilho na tabela de gatilhos

No MySQL, todas as informações do gatilho são armazenadas na tabela de gatilhos do banco de dados information_schema e podem ser visualizadas através do comando de consulta SELECT. A sintaxe específica é a seguinte:

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

Dentre eles, '触发器名'é utilizado para especificar o nome do gatilho a ser visualizado e precisa ser colocado entre aspas simples. Este método pode consultar o gatilho especificado, que é mais conveniente e flexível de usar.

Exemplo 2

Use o comando SELECT abaixo para visualizar o gatilho trigupdate. A instrução SQL é a seguinte:

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

O comando acima usa WHERE para especificar o nome do gatilho que precisa ser visualizado. Os resultados da execução são os seguintes:

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)

As informações detalhadas do gatilho podem ser vistas nos resultados da execução. A descrição das informações exibidas acima é a seguinte:

  • TRIGGER_SCHEMA indica o banco de dados onde o trigger está localizado;
  • TRIGGER_NAME representa o nome do gatilho;
  • EVENT_OBJECT_TABLE indica em qual tabela de dados ele é acionado;
  • ACTION_STATEMENT representa a operação específica executada quando o gatilho é acionado;
  • O valor de ACTION_ORIENTATION é ROW, o que significa que é acionado em todos os registros;
  • ACTION_TIMING indica que o momento de disparo é AFTER;
  • Há também algumas outras informações, como o horário de criação do gatilho, modo SQL, conta de definição do gatilho e conjunto de caracteres, etc., que não serão introduzidas uma por uma aqui.

 
A instrução SQL acima também não pode especificar o nome do gatilho, de modo que todos os gatilhos serão visualizados.A instrução SQL é a seguinte:

SELECT * FROM information_schema.triggers \G

Esta instrução exibirá todas as informações do gatilho na tabela de dados dos gatilhos.

MySQL modifica e exclui gatilhos (DROP TRIGGER)

Você pode modificar um gatilho excluindo o gatilho original e criando um novo gatilho com o mesmo nome.

gramática básica

Assim como outros  objetos de banco de dados MySQL  , os gatilhos podem ser removidos do banco de dados usando a instrução DROP.

O formato da sintaxe é o seguinte:

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

A sintaxe é explicada da seguinte forma:

1) Nome do gatilho

O nome do gatilho a ser excluído.

2) Nome do banco de dados

Opcional. Especifica o nome do banco de dados onde reside o gatilho. Se não for especificado, será o banco de dados padrão atual.

3) Permissões

A autoridade SUPER é necessária para executar a instrução DROP TRIGGER.

4) SE EXISTIR

Opcional. Evite excluir gatilhos sem gatilhos.

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

excluir gatilho

Use a instrução DROP TRIGGER para excluir gatilhos que foram definidos no MySQL.

[Exemplo] Exclua o gatilho double_salary. A instrução SQL de entrada e o processo de execução são os seguintes.

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

Após a exclusão da trigger double_salary, ao inserir novamente os registros na tabela de dados tb_emp6, os dados da tabela de dados tb_emp7 não são mais alterados, conforme mostrado abaixo.

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)

Treinamento prático de banco de dados mysql para engenheiro sênior de banco de dados Dachang icon-default.png?t=N7T8https://edu.csdn.net/course/detail/39021

Acho que você gosta

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