触发器 Trigger
一.触发器
作用:当检测到某种数据表发生数据变化时,自动执行操作,保证数据的完整性,保证数据的一致性。
1.创建一个触发器
如上图所示,查看这个create的帮助信息的时候,这个create trigger就是创建触发器的意思。
如上图所示,这是创建触发器的具体语法,方括号括起来的可有可无。
首先是触发器的名称
触发器执行的时间即
BEFORE:表示在触发事件发生之前执行触发器。
AFTER:表示在触发事件发生之后执行触发器。
触发器执行的触发事件
触发器所具体执行的操作。
触发器执行的时间即
BEFORE:表示在触发事件发生之前执行触发器。
AFTER:表示在触发事件发生之后执行触发器。
触发器执行的触发事件
触发器所具体执行的操作。
如上图所示,就是在MySQL数据库中触发器的语法。
案例1:当检测到人员增加的时候,数量自动增加。
如上图所示,这是在为创建触发器做准备工作。
首先是创建了一个指定字符集为utf8的数据库为testdb
然后在这个数据库中创建了一个user表,其中表的字段设置为三个字段,分别是id字段,name字段,age字段,其中的id字段设置为int类型的数据,主键属性,不空,并且配置了自增的属性。
name字段设置了字段类型的数据0
age字段存入int类型的数据。
随后又创建了number表,这个number表中只有number一个字段,这个字段只存入int类型的数据.
向user表的name,age字段插入数据,user01,age为20
向number表的number字段插入数据1
随后可以使用select * from 来查看表的信息。
如上图所示,这就是把SQL语句的结束符改成双叹号。方便写触发器。
如上图所示,这是在MySQL数据库中修改SQL语句的结束符为双叹号,
创建触发器,设置触发器名称为number_auto_add
并且设置这个触发器的执行是在触发事件之后。
具体的触发事件,即导致触发器执行的事件是向表user插入一条数据的时候,触发器开始执行。
随后的begin和end之间是触发体,即触发器具体要执行的命令。
即当user表中的name和age字段更新过后,就执行update表number中的number字段的数值,使得该字段的数值加一。
并且创建触发器,当user表中的数据每增加一行,此时number表中number字段的数值就加一。
触发器中的for each row的意思是让触发器去检测指定表中每行数据的变化。
如上图所示,这就是for each row的意思,检测指定表中每一行数据的变化。所以当表user中的数据增加两行以后,number表中的number字段的数值也就增加2
如上图所示,这是将MySQL数据库中的SQL语句的命令结束符修改为英文分号;
案例2:检测到人员减少,数量自动减少
如上图所示,这是在创建一个触发器
触发器名称为number_auto_reduce
触发器的执行是在触发事件之后,
触发事件是当删除表user中的内容时,执行触发体
其中begin和end之间的触发体是更新number表 set number字段的数值减去一。
如上图所示,这是对启动触发器的结果进行检验,
案例3:检测到员工增加时,自动添加工资信息
如上图所示,创建了员工表和薪资表,并为这两张表增添新的数据。
new代表的是worker表中新增加的一行信息,而name代表的是新增加的一行信息中的name用户名字段的数据。
new代表的是新数据,对于一张表来说,新增加的一行数据叫做新数据,使用update修改之后的也叫新数据。都可以使用这个new来标识新数据。
old代表的是旧数据是现有的数据。
如上图所示,当我们在表worker中添加新数据后,工资表自动更新,触发器执行触发体。
案例4:检测员工离职时,自动删除其工资信息。
如上图所示,这又是一个触发器,当员工表中有删除操作发生之后,执行触发体,
删除旧的薪资表中的旧数据。
如上图所示,这是触发器的效果演示
new 新数据【添加,更新】
old 旧数据,表中现有的数据
案例5:当检测到员工信息修改时,工资信息自动修改
如上图所示,创建触发器,当员工表中触发更新操作的时候,更新薪资表中旧的name字段数据为新的name字段数据。
如上图所示,是触发器的执行效果。
2.查看触发器
如上图所示,这是在数据库软件中查看触发器的操作,
3.删除触发器
如上图所示,这是删除触发器的操作。