触发器

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

触发器: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语句的触发器

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 触发器 MySQL包含对触发器的支持。触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用...
    FTOLsXD阅读 1,095评论 0赞 1
  • MySQL包含对触发器的支持。触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,...
    金星show阅读 940评论 0赞 3
  • SQL Server触发器创建、删除、修改、查看示例步骤 一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而...
    oo水桶oo阅读 3,395评论 0赞 3
  • 触发器分类 SQL Server提供三类触发器: DML触发器:在数据库中发生数据操作(Insert、Update...
    不知名的蛋挞阅读 1,846评论 0赞 5
  • 原来真的有些人、有些事,是上天安排教会你一些事,让你成长。 再见到她,在总公司大楼,她开会,而我正好上班,面对面,...
    单虎芽阅读 246评论 1赞 1

友情链接更多精彩内容