【发布时间】:2010-09-08 00:32:39
【问题描述】:
列出 MySQL 数据库中所有触发器的命令是什么?
【问题讨论】:
列出 MySQL 数据库中所有触发器的命令是什么?
【问题讨论】:
列出所有触发器的命令是:
show triggers;
或者您可以通过以下方式直接访问INFORMATION_SCHEMA 表:
select trigger_schema, trigger_name, action_statement
from information_schema.triggers
TRIGGERS table is here的信息。【讨论】:
SHOW TRIGGERS 要求您拥有该数据库和表的 TRIGGER 权限。如果您使用非特权用户登录 MySQL,则执行 SHOW TRIGGERS 将不会返回任何内容而不是抛出错误。如果您不了解权限要求,这可能会让人感到困惑。
希望下面的代码能给你更多的信息。
select * from information_schema.triggers where
information_schema.triggers.trigger_schema like '%your_db_name%'
这将在 MySQL 版本:5.5.27 及更高版本中为您提供总共 22 列
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
【讨论】:
LIKE。我曾在这样的环境中工作过,如果客户有一个名为“company”的数据库和另一个名为“company_project”的数据库,那么这样做很容易出错。为了清楚起见,我还建议大写 KEYWORDS 和 INFORMATION_SCHEMA 以及那里的列,这样很明显你不是在处理常规数据库。
您可以使用下面找到特定的触发器定义。
SHOW TRIGGERS LIKE '%trigger_name%'\G
或以下显示数据库中的所有触发器。它适用于 MySQL 5.0 及更高版本。
SHOW TRIGGERS\G
【讨论】:
要在特定架构中显示特定触发器,您可以尝试以下操作:
select * from information_schema.triggers where
information_schema.triggers.trigger_name like '%trigger_name%' and
information_schema.triggers.trigger_schema like '%data_base_name%'
【讨论】:
您可以使用 MySQL Workbench: 连接到 MySQL 服务器 选择数据库
【讨论】:
这句话可能有助于解决问题:
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%'
【讨论】: