mysql高级 tigger触发器 --[1]

触发器:

很方便,在商城中最常见。,你可以用两条语句,也可以用一个触发器

场景:

表中, 一个订单产生,然后库存减去数量。

表中,有关联的两个表,可在订单生成的时候判断客户的钱是否够

当有订单的时候,及时的向管理员发送一个信息。也可以用

英语:tigger  扳机;枪击;引线;触发;引起 

一个表改变可以改变n个表。?

监视->触发


/*

触发器tigger
需求:
商品表:
订单表:
 
 当下一个订单的时候对应的商品表相应减少

分析:
监视谁:ord
监视动作:insert
出发时间:fater # (暂选择之后)
出发事件:update

*/
create trigger t1 
after # 什么时候触发
insert # 监视什么动作
on ord  # 监视谁?
for each row # 暂时不理解
begin 
	update goods xxx
end;


创建试验表:

create table goods(
	gid int auto_increment primary key,
	name varchar(20),
	number smallint
);
create table ordz(
	oid int auto_increment primary key,
	gid int,
	much int
);

insert into goods values(1,'cat','20');
insert into goods values(2,'dog','20');
insert into goods values(3,'pig','20');


+-----+------+--------+
| gid | name | number |
+-----+------+--------+
|   1 | cat  |     20 |
|   2 | dog  |     20 |
|   3 | pig  |     20 |
+-----+------+--------+


创建触发器:

-- 如果买了,向ordz表添加数据, 则需要另外再写一条向goods表中减少
-- 但是创建触发器就方便了

create trigger t1
after insert
on goods
for each row
begin 
	update goods set num = num-2 where gid = 1;
end;
-- 报错!!!  两个分号
最外层用 $ 符号做分隔符



delimiter $
create trigger t1
after insert
on ordz
for each row
begin 
	update goods set number = number-2 where gid = 1;
end $




show triggers \G
*************************** 1. row ***************************
  Trigger: t1
    Event: INSERT
    Table: ordz
Statement: begin
        update goods set number = number-2 where gid = 1;
end
   Timing: AFTER
  Created: NULL
 sql_mode:
  Definer: root@localhost
1 row in set (0.01 sec)


插入ordz表 订单:

insert into ordz values(1,1,2);

+-----+------+--------+
| gid | name | number |
+-----+------+--------+
|   1 | cat  |     18 |
|   2 | dog  |     20 |
|   3 | pig  |     20 |
+-----+------+--------+

问题:  
1. 都减少了猫两只
2. 如果订单多了怎么办?




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值