触发器

作者: 蘋果_283e | 来源:发表于2017-03-19 19:04 被阅读0次

同一动作不能创建两个触发器

触发器:trigger, 枪击,扳击,引线的意思 一触即发,

作用: 监视某种情况并触发某种操作

触发器:

能监视: 增,删,改  触发操作: 增,删,改

查看触发器 show triggers;

after insert触发器 before insert触发器 after delete触发器 after update触发器

before 和after的区别

after是先完成数据的增删改,再触发,触发的语句晚于监视的增删改操作,无法影响前面的增删改动作;也就是说先插入订单记录,再更新商品的数量;

before是先完成触发,再增删改,触发的语句先于监视的增删改,我们就有机会判断,修改即将发生的操作;

//删除触发器(注意外键约束)drop trigger 触发器名称;

查看触发器show triggers;

//delimiter 定义mysql中的分隔符
在mysql中,';'标志着sql语句的结束,但是在触发器要执行的Sql语句中要使用到';',所有需要重新定义分隔符
delimiter //  敲//才执行Sql
//触发器(trigger)
定义:当执行一个动作时,引起了其他一系列的操作。

//创建学生数量表
create table st_count(
 number int(11) not null default 0
);
//创建触发器语法
create trigger 触发器名称
触发的时机 //before,after
触发的动作 //insert,update,delete
on 引起触发器的表名称
for each row
执行的sql语句;

//执行单条sql语句的触发器
//在student表中删除一条数据之后,st_count的学生数量自动-1
create trigger tri_after_del
after delete
on student for each row
update st_count set number = number -1;

//student执行delete操作
delete from student where stid = 7;

//执行多条sql语句的触发器
//在student表中存入一条数据之后,
(1)st_count的学生数量自动+1
(2)score自动存入学生一条成绩
create trigger tri_after_insert2
after insert
on student for each row
begin
 update st_count set number = number+1;
 insert into score values(8,1,100);
end
////调用:student执行Insert操作
insert into student values(9,'喵喵',22,'女','12345678909','2012-12-1','江苏');

insert into student (name,age,sex,tel,joinTime,local)values('喵喵',22,'女','12345678909','2012-12-1','江苏');
使用begin ...end结构,可以定义一个执行多条sql语句的触发器

相关文章

网友评论

      本文标题:触发器

      本文链接:https://www.haomeiwen.com/subject/jbkvnttx.html