如何列出MySQL数据库中的所有触发器?
答
的命令是:
show triggers
,或者你可以直接通过访问INFORMATION_SCHEMA
表:
select trigger_schema, trigger_name, action_statement
from information_schema.triggers
- 您可以从5.0.10版本做到这一点开始。
- 有关
TRIGGERS
table is here的更多信息。
答
对于显示出在特定模式特定的触发,你可以尝试以下方法:
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
我建议你使用了“SHOW触发器”的查询,而不是直接访问INFORMATION_SCHEMA去 - 如果服务器上有超过1000个数据库,后者将非常缓慢,而“SHOW TRIGGERS”仍然具有出色的性能。 – 2011-11-18 09:45:49
谢谢fpr第二个“复杂”版本。第一个在主机之一上不起作用(不知道resion)... – userlond 2015-02-09 08:00:53