您的位置:首页 > 数据库 > MySQL

mysql触发器实例收集

2015-12-27 09:48 603 查看
1.假设系统中有两个表:

班级表 class(班级号 classID, 班内学生数 stuCount)

学生表 student(学号 stuID, 所属班级号 classID)

要创建触发器来使班级表中的班内学生数随着学生的添加自动更新,代码如下:

DELIMITER $ //将结束符设置为‘$’

create trigger tri_stuInsert after insert // 创建触发器 以在插入表以后为触发点

on student for each row //应用到student表的每一行

begin //语句开始标志

declare c int; //声明变量,以分号结束

set c = (select stuCount from class where classID=new.classID); //设置变量,获取新插入的班级id对应的学生总数

update class set stuCount = c + 1 where classID = new.classID; //更新class表中新插入班级id所在的学生总数

end$

DELIMITER ; //将结束符恢复默认值

2.一旦生成订单,对应的库存表要减去相应的数据

建两张表 :一个商品goods表 一个订单order表

mysql> create table goods(goods_id int primary key auto_increment,goods_name varchar(64),shop_price
decimal(10,2),goods_number int)engine=myisam default charset =utf8;

mysql> create table `order`(goods_id int primary key auto_increment,goods_name varchar(64),buy_number
int)engine=myisam default charset=utf8;

mysql>insert into goods values(null,'nokiaN85',2000,35),(null,'iphone4S',4500,30),(null,'Lnmia',5000,40),(null,'samsung',4200,20);

new 的使用

mysql> create trigger alter_goods_number
after insert on `order` for each row update goods set goods_number=goods_number-new.buy_number where goods_id=new.goods_id;

mysql>
insert into `order` values(4,'samsung',5);

old 的使用

mysql> create trigger back_goods_number after delete on `order` for each row update goods set
goods_number=goods_number+old.buy_number where goods_id=old.goods_id;

mysql> delete from `order` where goods_id=1;

更新 (update将之前下的订单撤销,再重新下订单)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: