我是靠谱客的博主 幸福小蜜蜂,最近开发中收集的这篇文章主要介绍数据库编程中触发器的使用触发器定义的一般格式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

触发器是一种自定义的高级约束,触发体和触发条件具有原子性,要么全部被执行,要么全部不执行。

触发器定义的一般格式

CREATE TRIGGER  <触发器名> < BEFORE | AFTER >
 <INSERT | UPDATE | DELETE>
 ON <表名> FOR EACH ROW<触发器主体>

触发器名:建议命名格式为:Tri+表名+<INSERT | UPDATE | DELETE>
BEFORE | AFTER : 二选一,代表事前触发器(事后触发器)
<INSERT | UPDATE | DELETE>,代表触发器的条件
FOR EACH ROW:代表行级触发器,目前mysql不支持语句级触发器
触发器主体:一组完成指定任务的SQL代码;

事前和事后触发器

事前触发主要是验证一些条件或进行一些准备工作,在表保存之前就触发,如写入工资前,判断工资是否低于最低标准,如果低于最低标准,将更新数据改为最低标准。而事后触发则是进行收尾工作,保证事务的完整性,在表经过修改以后才触发,如:插入用户信息后,需要根据用户所在岗位,将该岗位必修课,设置为该用户的必修课。

触发器中的临时表

触发器中可以使用new和old两个临时表,这两个临时表和建立触发器的表结构完全一样,new记录着新值、old记录旧值。insert时new中为要新插入的记录,old为空;delete时,new为空,old记录旧记录;update时new和old分别记录新纪录和旧记录。

行级触发器和语句级触发器

行级触发器是对DML语句影响的每个行执行一次,如UPDATE语句影响多行,就会对每行都激活一次触发器;如:将计算机学院答辩通过的学生,状态更改为毕业,涉及200名学生,则该触发体需要执行200次。

而语句级触发器是对每个DML语句执行一次,如INSERT语句在表中即使插入了100多行,表上的INSERT语句级触发器也只会执行一次,如:
insert into TStudentCourse(sno,cname)
select sno,‘数据结构’ from student
虽然涉及多名学生但触发体只执行一次。

触发器注意事项

mysql触发器中可以调用存储过程,但不允许存储过程对触发器所在的表进行同样的操作,嵌套触发触发器操作。

最后

以上就是幸福小蜜蜂为你收集整理的数据库编程中触发器的使用触发器定义的一般格式的全部内容,希望文章能够帮你解决数据库编程中触发器的使用触发器定义的一般格式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部