如何列出 MySQL 数据库中的所有触发器?

在 MySQL 数据库中列出所有触发器的命令是什么?

150775 次浏览

The command for listing all triggers is:

show triggers;

或者你可以通过以下方式直接访问 INFORMATION_SCHEMA表:

select trigger_schema, trigger_name, action_statement
from information_schema.triggers

若要在特定架构中显示特定触发器,可以尝试以下操作:

select * from information_schema.triggers where
information_schema.triggers.trigger_name like '%trigger_name%' and
information_schema.triggers.trigger_schema like '%data_base_name%'

您可以使用下面的方法查找特定的触发器定义。

SHOW TRIGGERS LIKE '%trigger_name%'\G

或下面显示数据库中的所有触发器。它将工作在 MySQL 5.0及以上。

SHOW TRIGGERS\G

我希望以下代码将给您提供更多信息。

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

这将给你总共22列在 MySQL 版本: 5.5.27和以上

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

你可以使用 MySQL 工作台: 连接到 MySQL 服务器 选择 DB

  • tables
  • 在表名行上单击编辑图标(看起来像一个工作工具)
  • 在表格编辑窗口-点击标签“触发器”
  • 在 Triggers 列表中单击 theTrigger 名称以获取其源代码

This sentence could contribute to solving the problem:

select LOWER(concat('delimiter |', '\n', 'create trigger %data_base_name%.', TRIGGER_NAME, '\n',
'    ', ACTION_TIMING, ' ', EVENT_MANIPULATION, ' on %data_base_name%.', EVENT_OBJECT_TABLE, ' for each row', '\n',
ACTION_STATEMENT, '\n',
'|')) AS TablaTriggers from information_schema.triggers where
information_schema.triggers.trigger_schema like '%data_base_name%'
USE dbname;
SHOW TRIGGERS

OR

SHOW TRIGGERS FROM dbname;