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中的触发器和操作则是在一个事务中完成,是原子操作。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。