mysql高级 tigger触发器 --[2]
来源:互联网 发布:淘宝开店技巧与经验 编辑:程序博客网 时间:2024/05/23 14:14
接上个问题
number 和 gid 都传什么?
insert语句是否可以被引用到?
insert 和 delete 两个状态
delimiter $create trigger t2after inserton ordzfor each rowbegin update goods set number = number-? where gid = ?; # 哪一个? 因为是新的所以字段为 newend $改为
delimiter $create trigger t2after inserton ordzfor each rowbegin update goods set number = number-new.much where gid = new.gid; # newend $ok,报错了
大致意思是 不能同时监视两个一样的 如 insert 这种操作!!
查看已经有的: show triggers [\G]
删掉已经有的 : drop trigger Name;
再次运行就可~~~
truncate ordz; # 不干扰视线
insert into ordz values(3,2,2)$insert into ordz values(4,3,9)$+-----+------+--------+| gid | name | number |+-----+------+--------+| 1 | cat | 14 || 2 | dog | 18 || 3 | pig | 11 |+-----+------+--------+ # 成功 合理的删除了 改删除的
如果取消订单?应该恢复!
比如第三个pig商品
create trigger t3after deleteon ordzfor each rowbeginupdate goods set number = old.much+number where gid= old.gid;end$delete from ordz where oid = 4 $ # 删除订单 +-----+------+--------+| gid | name | number |+-----+------+--------+| 1 | cat | 14 || 2 | dog | 18 || 3 | pig | 20 |+-----+------+--------+
改数量:
'' insert 'new''old' delete '''old' update 'new'三种状态
比如改pigmysql> select * from goods;+-----+------+--------+| gid | name | number |+-----+------+--------+| 1 | cat | 14 || 2 | dog | 18 || 3 | pig | 11 |+-----+------+--------+3 rows in set (0.00 sec)mysql> select * from ordz;$+-----+------+------+| oid | gid | much |+-----+------+------+| 1 | 1 | 2 || 3 | 2 | 2 || 4 | 3 | 9 |+-----+------+------+
create trigger t4beforeupdateon ordzfor each row begin update goods set number = number + old.much - new.much where gid = old.gid;# +(5-3) = 2end$update ordz set much = 5 where oid=4$mysql> select * from goods$+-----+------+--------+| gid | name | number |+-----+------+--------+| 1 | cat | 14 || 2 | dog | 18 || 3 | pig | 15 |+-----+------+--------+3 rows in set (0.00 sec)mysql> select * from ordz$+-----+------+------+| oid | gid | much |+-----+------+------+| 1 | 1 | 2 || 3 | 2 | 2 || 4 | 3 | 5 |+-----+------+------+3 rows in set (0.00 sec)before 好像没有区别?!!~~如果剩余3头猪,但是客户买了10头猪,发生了什么情况!! 能否预防?
例:
> update ordz set much = 30 where oid=4ordz:+-----+------+------+| oid | gid | much |+-----+------+------+| 1 | 1 | 2 || 3 | 2 | 2 || 4 | 3 | 30 |+-----+------+------+goods:+-----+------+--------+| gid | name | number |+-----+------+--------+| 1 | cat | 14 || 2 | dog | 18 || 3 | pig | -10 |+-----+------+--------+ # 能否在购买量超过库存时,把much自动改为number 。 before 就体现出来了
爆仓了!!!
0 0
- mysql高级 tigger触发器 --[2]
- mysql高级 tigger触发器 --[1]
- mysql高级 tigger触发器 --[3]
- 触发器 tigger
- Mysql Tigger触发器创建和使用
- mysql高级:event触发器
- mysql高级:触发器
- oracle For循环和触发器Tigger
- tigger
- MYSQL 触发器的高级使用
- Mysql高级-视图触发器存储过程
- mysql存储过程、触发器、事物高级应用
- mysql高级 视图,触发器,存储过程
- MySQL高级八——触发器的使用
- MySql高级—视图、函数、存储过程、触发器
- MySql高级—视图、函数、存储过程、触发器
- 【mysql 触发器】触发器使用
- oracle触发器高级教程
- VMProtect SDK测试
- 算法导论——二叉查找树
- 正则表达式 整数浮点数
- rsync使用
- Windows 8.1 Update 1正式开放下载/自动更新
- mysql高级 tigger触发器 --[2]
- 优化WebLogic 服务器性能参数
- android-UI组件(四):AdapterView及其子类
- IOS开发入门基本知识——UIButton生成的关灯游戏(tag值的灵活运用)
- springmvc+spring+mybatis整合实例
- 【每日一C之十六】C语言位字段
- 第五章 面向对象编程(四)
- Android中Activity启动模式-初探
- rsync常见错误