当前位置: 首页 > 编程笔记 >

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

师赤岩
2023-03-14
本文向大家介绍如何列出MySQL数据库中的所有触发器?,包括了如何列出MySQL数据库中的所有触发器?的使用技巧和注意事项,需要的朋友参考一下

要列出MySQL数据库中的所有触发器,可以使用SHOW命令。查询如下-

mysql> show triggers;

以下是输出-

+----------------+--------+----------------------+--------------------------------------------------------------------+--------+------------------------+--------------------------------------------+---------+----------------------+----------------------+--------------------+
| Trigger        | Event  | Table                | Statement                                                          | Timing | Created                | sql_mode                                   | Definer | character_set_client | collation_connection | Database Collation |
+----------------+--------+----------------------+--------------------------------------------------------------------+--------+------------------------+--------------------------------------------+---------+----------------------+----------------------+--------------------+
| binsertTrigger | INSERT | functiontriggersdemo | SET new.Id = uuid() | BEFORE | 2018-10-16 13:36:09.86 | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION | root@% | cp850 | cp850_general_ci | utf8mb4_unicode_ci |
| Table1Trigger | INSERT | table1 | begin
insert into Table2(id, name) values (new.id, new.name);
end | AFTER | 2018-10-23 10:51:31.76 | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION | root@% | cp850 | cp850_general_ci | utf8mb4_unicode_ci |
| insertBef | INSERT | tblfunctiontrigger | SET new.id = uuid() | BEFORE | 2018-10-16 13:44:10.93 | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION | root@% | cp850 | cp850_general_ci | utf8mb4_unicode_ci |
+----------------+--------+----------------------+--------------------------------------------------------------------+--------+------------------------+--------------------------------------------+---------+----------------------+----------------------+--------------------+
3 rows in set (0.13 sec)

您可以在以下查询的帮助下访问information_schema表。

注意-您必须具有MySQL 5.0.10及更高版本。我目前正在使用MySQL版本8.0.12-

mysql> select trigger_schema, trigger_name, action_statement
−> from information_schema.triggers;

以下是输出-

+----------------+----------------------------+-------------------------------------------------------------------------------------------------------------------+
| TRIGGER_SCHEMA | TRIGGER_NAME               | ACTION_STATEMENT                                                                                                  |
+----------------+----------------------------+-------------------------------------------------------------------------------------------------------------------+
| sys            | sys_config_insert_set_user | BEGIN IF @sys.ignore_sys_config_triggers != true AND NEW.set_by IS NULL THEN SET NEW.set_by = USER(); END IF; END |
| sys            | sys_config_update_set_user | BEGIN IF @sys.ignore_sys_config_triggers != true AND NEW.set_by IS NULL THEN SET NEW.set_by = USER(); END IF; END |
| business       | binsertTrigger             | SET new.Id = uuid()                                                                                               |
| business       | insertBef                  | SET new.id = uuid()                                                                                               |
| business       | Table1Trigger              | begin
insert into Table2(id, name) values (new.id, new.name);end                                                                                                        |
+----------------+----------------------------+-------------------------------------------------------------------------------------------------------------------+
5 rows in set (0.00 sec)
 类似资料:
  • 问题内容: 是否可以将触发器应用于MySQL中的跨数据库访问?如果是,请举一个例子。我的目的是如果在database1中插入/更新/删除了任何新数据,则在database2中插入/更新/删除数据。我正在使用MySQL 5.1 问题答案: 是的你可以。您可以创建一个过程并在触发器中调用它。程序示例: 然后创建触发器:

  • 问题内容: 是否有一条SQL命令将列出数据库中的所有表,并且该命令与提供程序无关(可在MSSQLServer,Oracle,MySQL上运行)? 问题答案: 最接近的选项是查询表。 它是标准SQL的一部分,但并非所有供应商都支持它。据我所知,唯一支持它的RDBMS供应商是: 的MySQL PostgreSQL的 微软SQL服务器2000年/ 2005年/ 2008年 一些品牌的数据库,例如Orac

  • 问题内容: 我试图在以下位置找到针对此问题的解决方案:http : //mongodb.github.io/node-mongodb-native/ 但是,我找不到从Node.js应用程序列出所有可用的MongoDB数据库的解决方案。 问题答案: 使用。

  • 我知道如何列出特定数据库中的所有集合,但如何列出MongoDB Shell中所有可用的数据库?

  • 问题内容: 我的数据库的所有表中都有一列,我想说“在插入更新时” 我可以使用触发器来做到这一点,但是我发现很难为数据库的每个表编写数百个触发器。-如何动态创建影响所有表的触发器?-如何为每个表动态创建触发器? 问题答案: 更新任何表时都无法触发触发器。 您可以动态生成SQL Required,如下所示: 为每个表生成带有一行的列的SQL : 依赖于每个具有主键的表,以使表中的联接返回到要更新的表。