我是靠谱客的博主 儒雅斑马,最近开发中收集的这篇文章主要介绍mysql触发器(21-5-31),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Mysql触发器

1)它与表紧密相连,可以看作表定义的一部分;

2)它不能通过名称被直接调用,更不允许带参数,而是当用户对表中的数据进行 增删改操作时,自动执行;
3)它可以用于约束、默认值和规则的完整性检查,实施更为复杂的数据完整性约束。

创建触发器语法格式:

CREATE TRIGGER 触发器名 触发时间 触发事件
ON 表名 FOR EACH ROW
触发器动作

1.触发时间:

触发器触发的时刻,有两个选项:AFTERBEFORE,以表示触发器是在激活它的语句之前或之后触发。

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)所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部