MySQL 展示/列出触发器
当我们有许多包含不同表的数据库时,展示或列出触发器是非常需要的。有时我们在许多数据库中有相同的触发器名称;在这种情况下,这个查询起着重要作用。我们可以使用下面的语句在数据库服务器中获取触发器的信息。这个语句返回所有数据库中的所有触发器:
mysql> SHOW TRIGGERS;
以下步骤是获取所有触发器列表所必需的:
第1步: 打开 MySQL 命令提示符,并使用您在 MySQL的安装过程中创建的密码 登录到数据库服务器。成功连接后,我们可以执行所有的 SQL 语句。
第2步: 然后,使用以下命令选择特定的数据库:
mysql> USE database_name;
第3步: 最后,执行SHOW TRIGGERS命令。
让我们通过下面给出的例子来理解它。假设我们有一个名为 “mysqltestdb” 的数据库包含许多表。然后执行以下语句列出 触发器 :
mysql> USE mysqltestdb;
mysql>SHOW TRIGGERS;
以下输出更清晰地解释了这一点:
如果我们想在当前数据库中不切换数据库的情况下显示或列出特定数据库中的触发器信息,MySQL允许我们使用 FROM 或 IN 子句,后跟数据库名称。下面的语句更清楚地说明了这一点:
mysql> SHOW TABLES IN database_name;
上述陈述也可以写成:
mysql> SHOW TABLES FROM database_name;
当我们执行上述语句时,我们会得到相同的结果。
使用模式匹配显示触发器
MySQL还提供了 LIKE 子句选项,使我们能够使用不同的模式匹配来过滤触发器名称。以下是使用show trigger命令进行模式匹配的语法:
mysql> SHOW TRIGGERS LIKE pattern;
OR,
mysql> SHOW TRIGGERS FROM database_name LIKE pattern;
如果我们想根据特定的搜索条件列出/显示触发器名称,可以按如下方式使用 WHERE子句 :
mysql> SHOW TRIGGERS WHERE search_condition;
OR,
mysql> SHOW TRIGGERS FROM database_name WHERE search_condition;
示例
假设我们想要显示属于 employee 表的所有触发器,执行如下语句:
mysql> SHOW TRIGGERS FROM mysqltestdb WHERE table = 'employee';
我们将会得到以下输出结果:
注意:需要拥有SUPER权限才能执行SHOW TRIGGERS语句。
show trigger语句包含多个结果集中的列。让我们逐个详细解释每个列。
- Trigger: 这是我们要创建的触发器的名称,在模式中必须是唯一的。
- Event: 这是触发器调用的操作类型名称。可以是INSERT、UPDATE或DELETE操作。
- Table: 这是触发器所属的表的名称。
- Statement: 这是触发器的主体,包含触发器激活时的逻辑。
- Timing: 这是触发器的激活时间,可以是BEFORE或AFTER。它表示触发器在每次对表进行修改时是在之前还是之后被调用。
- Created: 它表示触发器创建的时间和日期。
- sql_mode: 它显示触发器执行时的SQL_MODE。
- Definer: 它是创建触发器的用户账户的名称,应该是’user_name’@’host_name’的格式。
- character_set_client: 它是触发器创建时的character_set_client系统变量的会话值。
- collation_connection: 它是触发器创建时的character_set_client系统变量的会话值。
- Database Collation: 它决定了比较和排序字符的规则。它是触发器所属的数据库的排序规则。
如何在MySQL Workbench中显示触发器?
它是一个可视化的GUI工具,用于快速高效地创建数据库、表、索引、视图和存储过程。要使用该工具显示触发器,我们首先需要启动MySQL Workbench,并使用之前创建的用户名和密码登录。我们将得到以下屏幕:
现在请按照以下步骤展示触发器:
1. 进入“导航”选项卡,点击包含 MySQL 服务器中所有可用数据库的 模式菜单 。
2. 选择数据库(例如, mysqltestdb ),双击进入,并显示包含表、视图、函数和存储过程的 子菜单 。参见下面的屏幕截图。
3. 点击 表子菜单 并选择您已创建触发器的表。请参考下图:
4. 点击 触发器子菜单 ,我们可以查看与选定表相关联的所有触发器。请查看下面的图像。