当我们有许多包含各种表的数据库时,就非常需要 show 或 list 触发器。有时我们在许多数据库中有相同的触发器名称;这个查询在这种情况下起着重要的作用。我们可以使用以下语句获取数据库服务器中的触发器信息。此语句返回所有数据库中的所有触发器:
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 语句在结果集中包含多个列。让我们详细解释每一列。
- Tigger:它是我们要创建的触发器的名称,并且在模式中必须是唯一的。
- 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:它决定了对字符串进行比较和排序的规则。它是触发器所属数据库的整理。