站长网 MySql教程 怎么创立MySQL的TRIGGER触发器

怎么创立MySQL的TRIGGER触发器

这篇文章主要讲解了怎么创建MySQL的TRIGGER触发器,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习怎么创建MySQL的TRIGGER触发器吧! MySQL TRIGGER(触发器) 数据库触发器是数据库中所维护的命名数据库对

这篇文章主要讲解了“怎么创建MySQL的TRIGGER触发器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么创建MySQL的TRIGGER触发器”吧!
 
MySQL TRIGGER(触发器)
数据库触发器是数据库中所维护的命名数据库对象,将在修改表中数据时被激活。使用触发器可以提高表中数据的功能和安全性级别。可以使用触发器控制对特定数据的访问权限、执行特定日志记录或对数据本身进行审计。
 
触发器是在修改表数据时激活的命名数据库对象。它们可以:
 
Ø  在插入或更新数据之前对数据进行检查并验证删除和更新
 
Ø  充当数据过滤器,在插入或更新之前修改超出范围的数据
 
Ø  修改INSERT、UPDATE 和DELETE 的行为方式
 
Ø  对于不支持外键的存储引擎,模仿外键的行为
 
Ø  提供日志记录功能
 
Ø  自动创建汇总表
 
1.1.        创建触发器
 
CREATE TRIGGER 语句:
 
CREATE TRIGGER trigger_name
 
{ BEFORE | AFTER }
 
{ INSERT | UPDATE | DELETE }
 
ON table_name FOR EACH ROW
 
triggered_statement
 
1.2.        触发器事件
 
BEFORE 和AFTER
 
BEFORE 和AFTER 关键字是指触发器的激活时间,相对于数据修改语句(INSERT、UPDATE 或DELETE)将更改写入底层数据库的时间。
 
BEFORE 关键字可使触发器在涉及的数据修改之前执行。可使用BEFORE 触发器捕获无效数据条目并在写入表之前对其进行更正或拒绝。
 
– BEFORE INSERT:在添加新数据之前触发
 
– BEFORE UPDATE:在使用新数据更新(或覆盖)现有数据之前触发
 
– BEFORE DELETE:在删除数据之前触发
 
AFTER 关键字定义在数据修改成功后执行的触发器。可使用AFTER 触发器记录或审计数据库中的数据修改。
 
– AFTER INSERT:在添加新数据之后触发
 
– AFTER UPDATE:在使用新数据更新(或覆盖)现有数据之后触发
 
– AFTER DELETE:在删除数据之后触发
 
1.3.        触发器错误处理
 
MySQL 按如下方式处理触发器执行期间发生的错误:
 
Ø  BEFORE 触发器失败,则包含相应行操作的事务将回滚。
 
Ø  AFTER 触发器执行,AFTER触发器事件和行操作必须成功执行。
 
Ø  对于非事务表,事务不可用。只有触发了触发器的语句会回滚。
 
触发器失败后,MySQL 会回滚包含导致触发器触发的语句的事务。
 
对于非事务表,无法完成此类回滚。因此,虽然语句失败,但在发生错误之前执行的所有更改仍然会生效。
 
1.4.        检查触发器
 
SHOW CREATE TRIGGER trigger_name
 
此语句返回可用于重新创建指定触发器的具体字符串。您必须知道触发器的名称才能运行此语句;对于SHOW CREATE TRIGGER 语句,不存在LIKE 或WHERE 语法。
 
SHOW TRIGGERS
 
此语句为MySQL 扩展。它可返回触发器的特征,如数据库、名称、类型、创建者以及创建和修改日期。此语句有一个优点:可基于LIKE 模式或WHERE 子句中提供的条件来显示特定触发器。如果未指定条件,则此语句会显示所有触发器的信息。
 
INFORMATION_SCHEMA.TRIGGERS:
 
此语句包含SHOW 命令所显示的所有数据,能够完整地呈现在所有数据库中可用的触发器。
 
1.5.        删除触发器
 
使用如下语法可显式删除触发器:
 
DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name;
 
使用DROP TRIGGER trigger_name 时,服务器会在当前模式中查找该触发器的名称。如果要删除其他模式中的触发器,请包含模式名称。使用IF EXISTS 可防止因尝试删除不存在的触发器而出现的错误。通过删除针对其定义触发器的表或者包含触发器的数据库,可隐式删除触发器;
 
1.6.        对触发器的限制
 
Ø  不允许使用的语句包括:
 
l  SQL 预处理语句
 
l  显示或隐式COMMIT 和ROLLBACK
 
l  返回结果集的语句,例如,不包含INTO var_list 子句的SELECT 语句
 
l  FLUSH 语句
 
l  用于修改要应用触发器的表的语句
 
l  SHOW 语句
 
 
请通过使用SELECT …INTO var_list,或者通过使用游标和FETCH 语句的方法在触发器中处理结果集。
 
1.7.        触发器权限
 
Ø  要执行CREATE TRIGGER 和DROP TRIGGER 命令,需要有TRIGGER 权限。
 
Ø  在触发器中使用OLD 和NEW需要的权限:要使用SET NEW.col_name = value 为列赋值,需要对该列拥有UPDATE 权限;要在表达式中使用NEW.col_name 以引用新的列值,需要对该列拥有SELECT 权限。
 
感谢各位的阅读,以上就是“怎么创建MySQL的TRIGGER触发器”的内容了,经过本文的学习后,相信大家对怎么创建MySQL的TRIGGER触发器这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。

本文来自网络,不代表站长网立场,转载请注明出处:https://www.tzzz.com.cn/html/jc/mysql/2021/1223/42291.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部