所谓触发器,就是在定义在表对象上。当触发器所在的表出现指定的事件时,会触发对应表的delete update insert的操作。说的有点绕口,其实就是到监视某种情况,然后去触发某种操作。

触发器是如何来进行定义的呢?

在定义时要注意四个基本的语法要素:

 1.监视地点(某张table)
2.监视事件(insert/update/delete)
3.触发时间(触发时的时机after/before,在事件执行之后或者在事件执行之前)
4.触发事件(insert/update/delete) 具体语法:
create trigger triggerName
after/before insert/update/delete on 表名
for each row #这句话在mysql是固定的
begin
sql语句;
end;

实例的数据库表的结构如下:

 SET FOREIGN_KEY_CHECKS=;

 -- ----------------------------
-- Table structure for tb_goods
-- ----------------------------
DROP TABLE IF EXISTS `tb_goods`;
CREATE TABLE `tb_goods` (
`g_id` int() NOT NULL AUTO_INCREMENT COMMENT '商品ID',
`goodname` varchar() DEFAULT NULL COMMENT '商品名称',
`goodcount` int() DEFAULT NULL COMMENT '商品数目',
PRIMARY KEY (`g_id`)
) ENGINE=InnoDB AUTO_INCREMENT= DEFAULT CHARSET=utf8; SET FOREIGN_KEY_CHECKS=;
-- ----------------------------
-- Table structure for tb_orders
-- ----------------------------
DROP TABLE IF EXISTS `tb_orders`;
CREATE TABLE `tb_orders` (
`o_id` int() NOT NULL AUTO_INCREMENT COMMENT '订单ID',
`g_id` int() DEFAULT NULL COMMENT '商品ID',
`ordercount` int() DEFAULT NULL COMMENT '订购数目',
PRIMARY KEY (`o_id`)
) ENGINE=InnoDB AUTO_INCREMENT= DEFAULT CHARSET=utf8;

解决如下几个问题:

(1)当我们向订单表中插入数据时,会将对应的商品的数目减少对应的数量,而不用手动去更新商品的数目。

初始的商品的数目:

insert into tb_orders(g_id,ordercount) values(,2) #向订单表中给商品编号为1的插入一条记录,则对应的商品ID为1的数目减2  #商品的数目

(2)当我们删除订单表中数据时,会将对应的商品的数目恢复到对应的数量。

delete from tb_orders where g_id =  #删除订单表中 商品编号为1的订单  则触发商品ID为2的商品数目恢复原来

(3)更新订单信息,则修改对应的商品的数目的信息

对应的触发器:

数据库中数据变化:

update tb_orders set ordercount = 2 where g_id = 1  #更新订单表中商品id为1的订单的数目 则触发商品表中数目变化

Mysql触发器实例分析的更多相关文章

  1. mysql触发器实例说明

    触发器是一类特殊的事务 ,可以监视某种数据操作(insert/update/delete),并触发相关操作(insert/update/delete). 看以下事件: 完成下单与减少库存的逻辑 Ins ...

  2. MySQL触发器Trigger实例篇

    定义: 何为MySQL触发器? 在MySQL Server里面也就是对某一个表的一定的操作,触发某种条件(Insert,Update,Delete 等),从而自动执行的一段程序.从这种意义上讲触发器是 ...

  3. MySQL触发器的正确使用与案例分析

    以下的文章主要向大家讲述的是MySQL触发器的实际使用详细说明与实际案例分析,同时本文也列举了一些在MySQL触发器的实际式操作中的代码,以下就是文章的详细内容介绍,望大家借鉴. 触发器案例 mysq ...

  4. (转)实例分析:MySQL优化经验

    [IT专家网独家]同时在线访问量继续增大,对于1G内存的服务器明显感觉到吃力,严重时甚至每天都会死机,或者时不时的服务器卡一下,这个问题曾经困扰了我半个多月.MySQL使用是很具伸缩性的算法,因此你通 ...

  5. mysql触发器trigger 实例详解

    mysql触发器trigger 实例详解 (转自 https://www.cnblogs.com/phpper/p/7587031.html)   MySQL好像从5.0.2版本就开始支持触发器的功能 ...

  6. MySQL 触发器简单实例 - 转载

    MySQL 触发器简单实例 触发器:可以更新,删除,插入触发器,不同种类的触发器可以存在于同一个表,但同种类的不能有多个.一个更新.一个删除是可以共存的. ~~语法~~ CREATE TRIGGER  ...

  7. PHP mysql事务问题实例分析

    本文实例分析了PHP的mysql事务问题.分享给大家供大家参考,具体如下: 对于myisam数据库,可以控制事务的进行: $mysqlrl = mysql_connect ( $db_config [ ...

  8. MySQL InnoDB索引介绍以及在线添加索引实例分析

    引言:MySQL之所以能成为经典,不是没有道理的,B+树足矣! 一.索引概念 InnoDB引擎支持三种常见的索引:B+树索引,全文索引和(自适应)哈希索引.B+树索引是传统意义上的索引,构造类似二叉树 ...

  9. 【转】mysql触发器的实战(触发器执行失败,sql会回滚吗)

    1   引言Mysql的触发器和存储过程一样,都是嵌入到mysql的一段程序.触发器是mysql5新增的功能,目前线上凤巢系统.北斗系统以及哥伦布系统使用的数据库均是mysql5.0.45版本,很多程 ...

随机推荐

  1. zookeeper学习之原理

    一.zookeeper 是什么 Zookeeper是一个分布式协调服务,可用于服务发现,分布式锁,分布式领导选举,配置管理等.这一切的基础,都是Zookeeper提供了一个类似于Linux文件系统的树 ...

  2. adb命令介绍

    1.adb logcat -v time -s ActivityManager:I 获取包名和activity 2. adb logcat "ActivityManager" |g ...

  3. CSS3 01. CSS3现状、属性选择器、伪类选择器、结构伪类、伪元素选择器、颜色、文本阴影shadow、盒子模型、私有化前缀

    CSS 3 现状 兼容性差,需添加私有前缀/移动端优于PC端/不断改进中/渐进增强原则/考虑用户群体/遵照产品的方案 : CSS3手册 需要阅读其--阅读及使用指引 []表示全部的可选项 || 或者 ...

  4. Hello, OpenWrite

    目录 Markdown For Typora Overview Block Elements Paragraph and line breaks Headers Blockquotes Lists T ...

  5. Kubernetes pod 状态

    CrashLoopBackOff: 容器退出,kubelet正在将它重启 InvalidImageName: 无法解析镜像名称 ImageInspectError: 无法校验镜像 ErrImageNe ...

  6. maven学习笔记(超详细总结)

    目录 项目管理利器--maven 第1章 maven概述 1-1 项目管理利器-maven简介 1.1.1 什么是maven 1.1.2 什么是依赖管理 1.1.3 传统项目的依赖管理 1.1.4 m ...

  7. SpringCloud超简单的入门(1)--一些简单的介绍

    简介 简单来说,springcloud的就是由一组springboot应用(服务)组成,相互之间通过REST等方式进行通信. 两个springboot应用,其中一个作为服务提供者,一个作为服务消费者, ...

  8. FreeSql (二十九)Lambda 表达式

    FreeSql 支持功能丰富的表达式函数解析,方便程序员在不了解数据库函数的情况下编写代码.这是 FreeSql 非常特色的功能之一,深入细化函数解析尽量做到满意,所支持的类型基本都可以使用对应的表达 ...

  9. Unity3D_01_各种寻找GameObject方法

    1.GameObject.Find(): 寻找Hierarchy面板中的activie 不为false的游戏对象: 路径如官方事例写法: public class ExampleClass : Mon ...

  10. All Of ACM

    数据结构和算法专栏,我会什么写什么  = = 不定时更新 一.数据结构 树状数组详解 线段树详解 二.算法 KMP算法 三.板子 我的代码模板 大整数模板 四.题解报告 几道STL题目(FJUT - ...