MySQL触发器管理
发布时间:2022-11-25 12:55:58 所属栏目:教程 来源:
导读: 在本教程中,您将学习如何管理触发器,包括在MySQL数据库中显示,修改和删除触发器。
创建触发器后,可以在包含触发器定义文件的数据文件夹中显示其定义。触发器作为纯文本文件存储在以下数据库文件夹中
创建触发器后,可以在包含触发器定义文件的数据文件夹中显示其定义。触发器作为纯文本文件存储在以下数据库文件夹中
|
在本教程中,您将学习如何管理触发器,包括在MySQL数据库中显示,修改和删除触发器。 创建触发器后,可以在包含触发器定义文件的数据文件夹中显示其定义。触发器作为纯文本文件存储在以下数据库文件夹中: /data_folder/database_name/table_name.trg 也可通过查询information_schema数据库中的triggers表来显示触发器,如下所示: SELECT * FROM information_schema.triggers WHERE trigger_schema = 'database_name' AND trigger_name = 'trigger_name'; 该语句允许您查看触发器的内容及其元数据,例如:关联表名和定义器,这是创建触发器的MySQL用户的名称。 如果要检索指定数据库中的所有触发器,则需要使用以下SELECT语句从information_schema数据库中的triggers表查询数据: SELECT * FROM information_schema.triggers WHERE trigger_schema = 'database_name'; 要查找与特定表相关联的所有触发器,请使用以下查询: SELECT * FROM information_schema.triggers WHERE trigger_schema = 'database_name' AND event_object_table = 'table_name'; 例如,以下查询语句与yiibaidb数据库中的employees表相关联的所有触发器。 SELECT * FROM information_schema.triggers WHERE trigger_schema = 'yiibaidb' AND event_object_table = 'employees'; 执行上面查询,得到以下结果 - mysql> SELECT * FROM information_schema.triggers WHERE trigger_schema = 'yiibaidb' AND event_object_table = 'employees'; +-----------------+----------------+------------------------+--------------------+----------------------+---------------------+--------------------+--------------+------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------+---------------+----------------------------+----------------------------+--------------------------+--------------------------+------------------------+-----------------------------------------------------------------------------------+----------------+----------------------+----------------------+--------------------+ | 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 | +-----------------+----------------+------------------------+--------------------+----------------------+---------------------+--------------------+--------------+------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------+---------------+----------------------------+----------------------------+--------------------------+--------------------------+------------------------+-----------------------------------------------------------------------------------+----------------+----------------------+----------------------+--------------------+ | def | yiibaidb | before_employee_update | UPDATE | def | yiibaidb | employees | 1 | NULL | BEGIN INSERT INTO employees_audit SET action = 'update', employeeNumber = OLD.employeeNumber, lastname = OLD.lastname, changedat = NOW(); END | ROW | BEFORE | NULL | NULL | OLD | NEW | 2017-08-02 22:06:36.40 | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION | root@localhost | utf8 | utf8_general_ci | utf8_general_ci | +-----------------+----------------+------------------------+--------------------+----------------------+---------------------+--------------------+--------------+------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------+---------------+----------------------------+----------------------------+--------------------------+--------------------------+------------------------+-----------------------------------------------------------------------------------+----------------+----------------------+----------------------+--------------------+ 1 row in set MySQL SHOW TRIGGERS语句 在特定数据库中显示触发器的另一种方法是使用SHOW TRIGGERS语句,如下所示: SHOW TRIGGERS [FROM|IN] database_name [LIKE expr | WHERE expr]; 例如,如果要查看当前数据库中的所有触发器,可以使用SHOW TRIGGERS语句,如下所示: SHOW TRIGGERS; 要获取特定数据库中的所有触发器,请在SHOW TRIGGERS语句中指定数据库名称,比如要查询数据库:yiibaidb下的所有触发器,如下所示: SHOW TRIGGERS FROM yiibaidb; 上面语句返回yiibaidb数据库中的所有触发器。 要获取与特定表相关联的所有触发器,可以使用SHOW TRIGGERS语句中的WHERE子句。 以下语句返回与employees表相关联的所有触发器: SHOW TRIGGERS FROM yiibaidb WHERE `table` = 'employees'; 请注意,我们使用反引号包装table列,因为table是MySQL中的保留关键字。 当执行SHOW TRIGGERS语句时,MySQL返回以下列 - 请注意,要执行SHOW TRIGGERS语句,您必须具有SUPER权限。 删除触发器 要删除现有的触发器,请使用DROP TRIGGER语句,如下所示: DROP TRIGGER table_name.trigger_name; 例如,如果要删除与employees表相关联的before_employees_update触发器,则可以执行以下语句: DROP TRIGGER employees.before_employees_update; 要修改触发器,必须首先删除它并使用新的代码重新创建。在MySQL中没有类似:ALTER TRIGG (编辑:草根网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐

浙公网安备 33038102330554号