Mysql学习笔记(一)

一、Mysql学习笔记-------------触发器
定义:触发器是一类特殊的事物,可以监视某种数据操作,如增删改,并触发相关操作,如增删改
触发器四要点:
   1.监视谁(table)
   2.监视事件(insert/update/delete)
   3.触发时间(after/before)
   4.触发事件(insert/update/delete)
语法:
    create trigger 触发器名称
	after/before(触发时间)
	insert/update/delete(监视事件)
	on 表名(监视谁)
	for each row
	begin
	sql1;.......sqlN;
	end
例子:
    商品表
	CREATE TABLE `goods` (
	  `gid` int(11) DEFAULT NULL,
	  `name` varchar(255) DEFAULT NULL,
	  `num` smallint(6) DEFAULT NULL
	);
	订单表
	CREATE TABLE `orders` (
	  `oid` int(11) DEFAULT NULL,
	  `gid` int(11) DEFAULT NULL,
	  `num` smallint(6) DEFAULT NULL
	)
	1.下单后,对应商品的数量减去下单数量
	  create trigger t1 
	  after insert on orders
	  for each row
	  begin
	      update goods set num = num - new.num where gid = new.gid;
	  end;
	2.删除订单后,对应商品的数量加上下单数量
	  create trigger t2
	  after delete on orders
	  for each row
	  begin
	       update goods set num = num + old.num where gid = old.gid
	  end;
	 3.只修改订单数量
	   create trigger t3
		before update on orders 
		for each row
		begin 
		  update goods set num = num + old.num - new.num where gid = old.gid;
		end;
	4.当下订单时,对应商品的数量减去下单数量,并检测是否爆仓,如果爆仓则只修改库存里的
	    create trigger t4
		before on orders
		for each row
		begin
		  declare rnum int;
		  select num into rnum from goods where gid = new.gid;
		  if new.num>rnum then
		     set new.num = rnum;
		  end;
		  update goods set num = num - new.num where gid = new.gid;
		end;
		

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值