什么是触发器?

触发器是数据库的一个程序,他是用来监听着数据表的某个行为,一旦数据表的这个行为发生了,马上执行相应的sql语句

触发器的语法结构:

create trigger触发器的名称触发器事件on监听的表名for each row行为发生后执行的sql语句

触发器事件组成:;两部分组成:

触发器事件发生的时间-----是在监听的表的行为after  before常用的是after

触发器执行的内容:增删改

创建order表的时候,需要注意,因为order在mysql中是一个关键字排序,为了避免错误的发生,我们可以添加反引号,表明这不是一个关键字

案例研究:

一旦生成订单,对应的库存表要减去相应的数据

(1)建两张表 :一个商品goods表 一个订单order表

mysql> create table goods(goods_id int primary key auto_increment,goods_name var

char(64),shop_price decimal(10,2),goods_number int)engine=mysiam default charset

=utf8;

mysql> create table `order`(goods_id int primary key auto_increment,goods_name v

archar(64),buy_number int)engine=mysiam default charset=utf8;

mysql> insert into goods values(null,'nokiaN85',2000,35),(null,'iphone4S',4500,3

0),(null,'Lnmia',5000,40),(null,'samsung',4200,20);

mysql> select*from goods;

+----------+------------+------------+--------------+

| goods_id | goods_name | shop_price | goods_number |

+----------+------------+------------+--------------+

|        1 | nokiaN85   |    2000.00 |           35 |

|        2 | iphone4S   |    4500.00 |           30 |

|        3 | Lnmia      |    5000.00 |           40 |

|        4 | samsung    |    4200.00 |           20 |

+----------+------------+------------+--------------+

(2)创建触发器

mysql> create trigger alter_goods_number after insert on `order` for each row up

date goods set goods_number=goods_number-5 where goods_id=1;

mysql> insert into `order` values(1,'nokiaN85',5);

mysql> select*from goods;

+----------+------------+------------+--------------+

| goods_id | goods_name | shop_price | goods_number |

+----------+------------+------------+--------------+

|        1 | nokiaN85   |    2000.00 |           30 |

|        2 | iphone4S   |    4500.00 |           30 |

|        3 | Lnmia      |    5000.00 |           40 |

|        4 | samsung    |    4200.00 |           20 |

+----------+------------+------------+--------------+

new 的使用 mysql> create trigger alter_goods_number after insert on `order` for each row up

date goods set goods_number=goods_number-new.buy_number where goods_id=new.goods

_id;

mysql> insert into `order` values(4,'samsung',5);

old 的使用

mysql> create trigger back_goods_number after delete on `order` for each row upd

ate goods set goods_number=goods_number+old.buy_number where goods_id=old.goods_

id;

mysql> delete from `order` where goods_id=1;

更新  (update将之前下的订单撤销,再重新下订单)

mysql> create trigger update_goods_number after update on `order` for each row u

pdate goods set goods_number=goods_number+old.buy_number-new.buy_number where go

ods_id=new.goods_id;

mysql> update `order` set buy_number = 10 ;

mysql 触发器 库存管理_Mysql中的触发器(库存、用户订单中用到)相关推荐

  1. mysql获取当月最后一天_mysql中获取本月第一天、本月最后一天、上月第一天、上月最后一天

    mysql获取当月最后一天_mysql中获取本月第一天.本月最后一天.上月第一天.上月最后一天等等 转自: https://blog.csdn.net/min996358312/article/det ...

  2. mysql字段重命名_MySQL中使用SQL语句对字段进行重命名

    MySQL中,如何使用SQL语句来对表中某一个字段进行重命名呢?我们将使用alter table 这一SQL语句. 重命名字段的语法为:alter table change . 现在我们来尝试把tes ...

  3. mysql添加临时索引_mysql 中添加索引的三种方法

    在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以通过不同的应用场景来进行索引的新建,在此列出三种新建索引的方法 mysql 中添加索引的三种方法 1.1 新建表中添加索 ...

  4. Oracle一张表写多个触发器,详解oracle中通过触发器记录每个语句影响总行数

    详解oracle中通过触发器记录每个语句影响总行数 需求产生: 业务系统中,有一步"抽数"流程,就是把一些数据从其它服务器同步到本库的目标表.这个过程有可能 多人同时抽数,互相影响 ...

  5. my sql 触发器_在表中创建触发器 (SQL)

    示例 1:行级 INSERT 触发器 以下触发器是一个行级 INSERT 触发器的示例.它检查为新雇员输入的出生日期是否合理:CREATE TRIGGER check_birth_date AFTER ...

  6. mysql二进制日志管理_MYSQL二进制日志管理脚本

    MYSQL二进制日志管理脚本脚本原理是每小时对进行flush生成新的二进制日志,将二进制日志备份至NFS,并压缩存放:#!/bin/bash#Purpose:管理二进制日志,每小时刷新二进制日志,并将 ...

  7. mysql日期格式化季度_mysql中常用日期比较与计算函数

    MySql中时间比较的实现 unix_timestamp() unix_timestamp 函数可以接受一个参数,也可以不使用参数. 它的返回值是一个无符号的整数.不使用参数,它返回自1970年1月1 ...

  8. mysql sql 时间比较_mysql中sql语句进行日期比较

    这里是一个使用日期函数的例子.下面的查询选择了所有记录,其date_col的值是在最后30天以内: mysql> SELECT something FROM table WHERE TO_DAY ...

  9. mysql not null 索引_MySQL中 IS NULL、IS NOT NULL、!= 能用上索引吗?

    看面试题的时候,总能看到MySQL在什么情况下用不上索引,如下: MySQL的WHERE子句中包含 IS NULL.IS NOT NULL.!= 这些条件时便不能使用索引查询,只能使用全表扫描. 不耽 ...

最新文章

  1. matlab 12脉波变压器,12脉波中频炉专用变压器外形尺寸
  2. php加密后无法读取,无法解密的php加密文件
  3. iOS 微信消息拦截插件系列教程-附录(服务端成果展示)
  4. 智能电子秤全国产化电子元件推荐方案
  5. ERP项目基础概念整理
  6. 自己用GO语言编写的AliDDNS动态域名更新服务,routeros
  7. python获取已打开的网页内容_从Python3浏览器中已打开的网页获取HTML文件
  8. irving - 初学python
  9. 挑战微软 + GitHub!谷歌联手 Replit,升级 AI 编程“神器”:曾拒绝微软 10 亿美元的收购...
  10. CSS 字体样式大全
  11. GitLab设置受保护的分支
  12. UI自动化测试框架-从入门到精通
  13. Windows bat 脚本简单用法
  14. Linux内核分析及内核编程
  15. 基于STM32蓝牙控制的app智能台灯设计
  16. [我可怜的诺基亚3110c!]
  17. 设置VLC播放器进行RTSP推流桌面(共享桌面)
  18. (转)打印机连接不上的解决办法:超过连接最大数
  19. (剖面图全网唯一教程)如何利用EDEM制作剖面图 (自己琢磨出)
  20. Pandas的学习之——使用Pandas进行描述性统计

热门文章

  1. matlab/ansys协同的一个例子
  2. haar级联分类器--人脸检测和匹配
  3. mysql为什么选错索引?怎么解决?
  4. Spring Data JPA 从入门到精通~Criteria概念的简单介绍
  5. JMM同步原语之final域的内存语义
  6. JSON.parse()解析单引号错误的问题
  7. 性能测量工具类——TimeMeasureUtil TimeMeasureProxy
  8. vba转换为vbs的方法_vba代码改成vbs,该怎么解决(4)
  9. 数据库缓存双写一致性的一些个人想法
  10. 服务器winsxs文件夹怎么清理工具,winsxs,教您winsxs文件夹清理方法