概述
Mysql触发器
1)它与表紧密相连,可以看作表定义的一部分;
2)它不能通过名称被直接调用,更不允许带参数,而是当用户对表中的数据进行 增删改操作时,自动执行;
3)它可以用于约束、默认值和规则的完整性检查,实施更为复杂的数据完整性约束。
创建触发器语法格式:
CREATE TRIGGER 触发器名 触发时间 触发事件
ON 表名 FOR EACH ROW
触发器动作
1.触发时间:
触发器触发的时刻,有两个选项:AFTER和BEFORE,以表示触发器是在激活它的语句之前或之后触发。
after是先完成数据的增删改,再触发动作,触发的语句晚于监视的增删改操作,无法影响前面的增删改动作;
before是先完成触发,再增删改,触发的语句先于增删改的操作,我们可以提前判断即将发生的操作。
2.触发事件:
指明了激活触发程序的语句的类型。触发事件可以是下述值之一:
INSERT:将新行插入表时激活触发器。
UPDATE:更改某一行时激活触发器。
DELETE:从表中删除某一行时激活触发器。
3.触发器动作:
包含触发器激活时将要执行的语句。如果要执行多个语句,可使用BEGIN … END复合语句结构。这样,就能使用存储过程中允许的相同语句。
例如:
创建一个触发器,每次修改完Student表中数据时,将用户变量str值“学生表信息被修改”。
程序代码:
CREATE TRIGGER UpdateFor_Student
AFTER Update
ON Student FOR EACH ROW
Set @str='学生表信息被修改';
触发:
Update Student
Set StudentAge=StudentAge+1
Where StudentNo='10403201';
Select @str;
4.Mysql缓存区中两种特殊的临时表
-
new表
存储着被INSERT 和UPDATE语句影响的新的数据行。当用户执行INSERT 和UPDATE语句时,新的数据行被添加到临时表new中。临时表new只保留最后一次新增的数据。
-
old表
存储着被DELETE和UPDATE语句影响的旧数据行。在执行DELETE和UPDATE语句过程中,指定的数据行被用户从基本表中删除,然后转移到了临时表old中。临时表old只保留最后一次删除的数据
例:
创建一个触发器,当在Course表中新增一条订单记录时,判断学分的值,如果大于6,就默认改为6
程序代码:
DELIMITER $$
CREATE TRIGGER Insert_Course
BEFORE Insert
ON Course for each row
begin
if new.CourseCredit>6 then
set new.CourseCredit=6;
end if;
End$$
DELIMITER ;
触发:
insert into course values('1006','大数据',8,'张三')$$
最后
以上就是儒雅斑马为你收集整理的mysql触发器(21-5-31)的全部内容,希望文章能够帮你解决mysql触发器(21-5-31)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复