Fork me on GitHub

使用触发器做简单编程

有两张表(商品表和订单表,结构如下)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE TABLE goods (
  gid int(11) DEFAULT NULL,
  name varchar(20) DEFAULT NULL,
  num smallint(6) DEFAULT NULL
);
 
 
CREATE TABLE ord (
  oid int(11) DEFAULT NULL,
  gid int(11) DEFAULT NULL,
  much smallint(6) DEFAULT NULL
);
 
插入数据:
INSERT INTO goods VALUES ('1','cat','32'), ('2','dog','65'), ('3','pig','21');

 业务场景如下:

客户如果买的东西超过了库存(goods表的num字段),如何预防,能否在购买量(插入ord表的much字段)>库存量(goods表的num字段)时,把much自动改为num

使用触发器:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
create trigger t
before
insert
on ord
for each row
 
begin
 
declare
rnum int;
 
select num into rnum from goods where gid = new.gid;
 
if new.much > rnum then
    set new.much = rnum;
end if;
 
update goods set num = num - new.much where gid=new.gid;
end

  

 

posted @   龙族小龙  阅读(384)  评论(0编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥
点击右上角即可分享
微信分享提示