SQL 触发器
触发器是一种特殊类型的存储过程,不由用户直接调用。
触发器(trigger)是指隐含执行的存储过程procedure,当定义触发器时必须要指定触发事件和触发的操作,通常触发事件包括insert,update,delete语句,触发器实际上就是一个pl/sql(procedure language/Structured Query Language).create trigger来创建触发器;
触发器的作用:
a.允许/限制对表的修改
b.自动派生列,如自增字段
c.强制数据的一致性
d.提供审计和日志记录
e.防止无效的事务处理
f.启动复杂的业务逻辑
创建触发器语法:
CREATE TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt;
trigger_name 标识触发器名称,用户自行指定;
trigger_time 标识触发时机,用before和after替换;
trigger_event 标识触发事件,用insert,update和delete替换;
tbl_name 标识建立触发器的表名,即在哪张表上建立触发器;
trigger_stmt 触发器程序体;触发器程序可以使用begin和end作为开始和结束,中间包含多条语句;
删除触发器语法:
DROP TRIGGER [schema_name.]trigger_name
需要注意以下几点:
1、MySQL触发器针对行来操作,因此当处理大数据集的时候可能效率很低。
2、触发器不能保证原子性,例如在MYISAM中,当一个更新触发器在更新一个表后,触发对另外一个表的更新,若触发器失败,不会回滚第一个表的更新。InnoDB中的触发器和操作则是在一个事务中完成,是原子操作。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。