Como você lista todos os gatilhos em um banco de dados MySQL?


100

Qual é o comando para listar todos os gatilhos em um banco de dados MySQL?

Respostas:


149

O comando para listar todos os gatilhos é:

show triggers;

ou você pode acessar a INFORMATION_SCHEMAtabela diretamente por:

select trigger_schema, trigger_name, action_statement
from information_schema.triggers

2
Eu recomendo usar a consulta "SHOW TRIGGERS" em vez de acessar information_schema diretamente - o último será muito lento, uma vez que você tenha mais de mil bancos de dados no servidor, enquanto "SHOW TRIGGERS" ainda tem um desempenho excelente.
— Martin Tajur

Obrigado pela segunda versão "complicada" da fpr. O primeiro não funciona (não sei a resolução) em um dos hosts ...
— userlond de

3
Observe que isso SHOW TRIGGERSrequer que você tenha o TRIGGERprivilégio para esse banco de dados e tabela. Se você efetuar login no MySQL com um usuário sem privilégios, a execução SHOW TRIGGERSnão retornará nada em vez de gerar um erro. Isso pode ser confuso se você não estiver ciente do requisito de privilégio.
— Christopher Schultz

14

Espero que o código a seguir forneça mais informações.

select * from information_schema.triggers where 
information_schema.triggers.trigger_schema like '%your_db_name%'

Isso lhe dará um total de 22 colunas na versão do MySQL: 5.5.27 e acima

TRIGGER_CATALOG 
TRIGGER_SCHEMA
TRIGGER_NAME
EVENT_MANIPULATION
EVENT_OBJECT_CATALOG
EVENT_OBJECT_SCHEMA 
EVENT_OBJECT_TABLE
ACTION_ORDER
ACTION_CONDITION
ACTION_STATEMENT
ACTION_ORIENTATION
ACTION_TIMING
ACTION_REFERENCE_OLD_TABLE
ACTION_REFERENCE_NEW_TABLE
ACTION_REFERENCE_OLD_ROW
ACTION_REFERENCE_NEW_ROW
CREATED 
SQL_MODE
DEFINER 
CHARACTER_SET_CLIENT
COLLATION_CONNECTION
DATABASE_COLLATION

1
Eu evitaria usar LIKEao lidar com o esquema. Eu trabalhei em ambientes onde fazer dessa forma seria propenso a erros, onde um cliente tinha um banco de dados chamado "empresa" e outro chamado "empresa_projeto". Eu também sugeriria capitalizar KEYWORDS para maior clareza e INFORMATION_SCHEMA e as colunas lá para que fique claro que você não está lidando com um banco de dados normal.
— AndrewWhalan

13

Você pode usar a seguir para encontrar uma definição de gatilho específica.

SHOW TRIGGERS LIKE '%trigger_name%'\G

ou o seguinte para mostrar todos os gatilhos no banco de dados. Funcionará no MySQL 5.0 e superior.

SHOW TRIGGERS\G

9

Para mostrar um determinado gatilho em um determinado esquema, você pode tentar o seguinte:

select * from information_schema.triggers where 
information_schema.triggers.trigger_name like '%trigger_name%' and 
information_schema.triggers.trigger_schema like '%data_base_name%'
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.