接上个问题

number 和 gid 都传什么?

insert语句是否可以被引用到?


insert 和 delete  两个状态

delimiter $
create trigger t2
after
insert
on ordz
for each row
begin update goods set number = number-? where gid = ?;  # 哪一个? 因为是新的所以字段为 new
end $

改为

delimiter $
create trigger t2
after
insert
on ordz
for each row
begin update goods set number = number-new.much where gid = new.gid;  # new
end $

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 t3
after
delete
on ordz
for each row
beginupdate 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'三种状态
比如改pig
mysql> 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 t4
before
update
on ordz
for each row
begin update goods set number = number + old.much - new.much where gid = old.gid;# +(5-3) = 2
end$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=4
ordz:+-----+------+------+| 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  就体现出来了

爆仓了!!!

mysql高级 tigger触发器 --[2]相关推荐

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

    触发器: 很方便,在商城中最常见.,你可以用两条语句,也可以用一个触发器 场景: 表中, 一个订单产生,然后库存减去数量. 表中,有关联的两个表,可在订单生成的时候判断客户的钱是否够 当有订单的时候, ...

  2. mysql高级 tigger触发器 --[3]

    爆仓怎么办: 用sql的判断语句,就像某某语言一样! /* 之前一些语句:declare xx int/char.. 这个是声明变量if xxx then xyxyend if; if语句 */cre ...

  3. Mysql高级之触发器

    原文:Mysql高级之触发器 触发器是一类特殊的事务 ,可以监视某种数据操作(insert/update/delete),并触发相关操作(insert/update/delete). 看以下事件: 完 ...

  4. 布尔教育 mysql高级_布尔教育 Mysql高级 燕十八

    布尔教育 Mysql高级 燕十八--更多资源,课程更新在 多智时代 duozhishidai.com 多智时代资源,简介: 这是燕十八出的mysql教程,需要的可以看看 目录: 布尔教育 Mysql高 ...

  5. MySQL高级 —— 查询性能优化

    引言 承接<MySQL高级 -- 高性能索引>,本篇博客将围绕<高性能MySQL(第三版)>第六章内容进行总结和概括. 与索引的部分一样,SQL优化也是广大程序员深入MySQL ...

  6. MySQL高级 —— 高性能索引

    引言 最近一直在抱着<高性能MySQL(第三版)>研究MySQL相关热点问题,诸如索引.查询优化等,这阶段的学习是前一段时间MySQL基础与官方的"阅读理解"的进一步延 ...

  7. MySQL高级(一)

    MySQL高级(一)计划讲解的是索引,视图,存储过程和函数,触发器. 本次是在Linux上安装Mysql服务的,具体的安装连接请参照我的另一篇博客:https://blog.csdn.net/zeng ...

  8. 从前慢-Mysql高级及实战

    Mysql高级及实战 1 Linux 系统安装MySQL 1.1 下载Linux 安装包 https://dev.mysql.com/downloads/mysql/5.7.html#download ...

  9. Mysql高级命令与概念

    Mysql高级命令 1. 存储过程&函数-(了解) 在mysql数据库端编写带有逻辑的代码, 可以在客户端直接调用, java端可以写更少的代码 存储过程没有返回值, 函数必须有返回值 优点: ...

最新文章

  1. Pandas 基础 (5) —— 处理缺失数据及层次化索引
  2. 1.spring boot要求最低jdk1.8,平安默认1.6问题,-》安装JDK1.8 2.maven 3.3.3要求最低jdk1.7-安装jdk 1.8...
  3. 第四范式连续两年入选CB Insights全球AI百强榜
  4. 一发工资就全部取出,会对银行流水有影响吗?
  5. C++学习之路 | PTA乙级—— 1002 写出这个数 (20分)(精简)
  6. c# 对各数据库、数据集链接字符串
  7. 神经网络技巧篇之寻找最优参数的方法【续】
  8. msp430项目编程44
  9. 如何录制电脑系统声音(Audacity)
  10. R数据分析:方法与案例详解--自学笔记
  11. 木马开发的基本理论基础(四)
  12. Linux CentOS服务器时间同步阿里云北京时间
  13. 《领导力与沟通艺术》
  14. Python绘制漫天的雪花,漫步天涯
  15. 金庸武侠、四大名著的语言风格
  16. [读书笔记]多线程学习笔记
  17. 计算机的随想作文500字,新年随想作文500字(通用5篇)
  18. 华为助力南昌轨道“长龙”4号线实现南北游走
  19. 倒F天线仿真及走线宽度和高度对天线参数的影响
  20. 互联网、因特网、万维网、局域网、广域网的区别

热门文章

  1. Coarse-Grain Fine-Grain Coattention Network for Multi-Evidence Question Answering
  2. NGINX免费配置二级域名及同时开启HTTPS(HTTP强制转HTTPS)nodejs的express后端项目,前端next.js的SSR项目
  3. 冰河凭什么能够顺利拿下三个软考高级证书?有什么技巧(诀窍)吗?
  4. 【linux】can‘t set line discipline
  5. 【Azure Data Platform】ETL工具(21)——Azure Databricks使用(1)——访问Azure Blob
  6. 什么是令牌桶(Token Bucket)?
  7. 中语言超酷特性 之 --- 逆唤算式
  8. 地震——《孩子,快抓紧妈妈的手》
  9. [转载]摩托车 各车型 坐姿 疲劳逻辑详解
  10. Codeforces 786A Berzerk(博弈)