触发器 trigger

1、触发器是指事先为某张表绑定一段代码,当表中某些内容发生改变(增insert、删delete、改update)时,系统自动触发绑定的那段代码并执行。比如 一旦订单表里插入新订单,商品的库存数自动减N.

2、触发器的三要素:

事件因素:insert、删delete、改update

触发时间:前before、后after

触发对象:表中每条记录,即整个表

那么每张表可以有6个触发器(增、删、改3个事件的前和后)

3、创建触发器

delimiter--自定义符号

create trigger+触发器名称+触发器时间+事件类型 on 表名 for each row;

begin--触发器内容的开始

---触发器内容主体

end--触发器内容结束

delimiter.--恢复语句结束符

4、以商品表goods  和订单表odrer举例说明触发器,sql语句如下:

创建商品表:

create table goods(

in int primary auto_increment,

name varchar(20) not null,----- not null:意思是不允许给这个字段插入空值

price decimal(10,2)  default 0,------------decimal一种数据类型,decimal(5,2)表示一共5位数,小数位2位,整数位5-2位

default:当没有给此字段插入值时,默认给的值

inventory int comment '商品库存量'-----comment  类似注释,备注说明的意思

)

create table goods( id int primary key auto_increment, name varchar(20) not null, price int, inventory int );

插入商品:

insert into goods values (1,‘Apple’,11,100),(2,‘Pear’,21,100);

创建订单表

create table orders (id int primary key auto_increment, good_id int,good_num int);

创建触发器

delimiter $$--临时修改语句结束符

create trigger after_order after insert on orders for each row

begin---触发器主体内容开始

update goods set invenment=invenment-1 where id=1;--触发器主体内容,每行要以分号;结束

end---触发器主体内容结束

$$--结束语句

deloimiter;恢复语句结束符

使用触发器

由结果可以看出,在给订单表添加一条记录后,商品表中对应的商品库存数减了1(先不管数量应该减10)

触发器的触发对象和事件类型,一定不能和触发主体相同,否则容易造成死循环

MYSQL---触发器简单了解的更多相关文章

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

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

  2. MySQL 触发器简单实例

    ~~语法~~ CREATE TRIGGER <触发器名称>  --触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象.{ BEFORE |  ...

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

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

  4. redis作为mysql的缓存服务器(读写分离,通过mysql触发器实现数据同步)

    一.redis简介Redis是一个key-value存储系统.和Memcached类似,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录 ...

  5. mysql触发器的作用及语法

    触发器是一种特殊的存储过程,它在插入,删除或改动特定表中的数据时触发运行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力. 数据库触发器有下面的作用: 1.安全性.能够基于数据库的值使用户具有 ...

  6. MYSQL触发器在PHP项目中用来做信息备份、恢复和清空

    案例:通过PHP后台代码可以将员工的信息删除,将删除的员工信息进行恢复(类似于从回收站中恢复员工信息),并且还可以将已经删除的员工进行清空(类似于清空回复站的功能). 思路:要有一张员工表,还要有一张 ...

  7. MySQL触发器在PHP项目中用来做信息备份、恢复和清空的方法介绍

    案例:通过PHP后台代码可以将员工的信息删除,将删除的员工信息进行恢复(类似于从回收站中恢复员工信息),并且还可以将已经删除的员工进行清空(类似于清空回复站的功能). 思路:要有一张员工表,还要有一张 ...

  8. 关于mysql触发器和存储过程的理解

    内容源自:一篇很棒的 MySQL 触发器学习教程 一.触发器概念 触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊 ...

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

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

  10. 一篇很棒的 MySQL 触发器学习教程

    一.触发器概念 触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动 ...

随机推荐

  1. 2016 NEERC, Northern Subregional Contest G.Gangsters in Central City(LCA)

    G.Gangsters in Central City 题意:一棵树,节点1为根,是水源.水顺着边流至叶子.该树的每个叶子上有房子.有q个询问,一种为房子u被强盗入侵,另一种为强盗撤离房子u.对于每个 ...

  2. 前端工程师需要掌握的 Babel 知识

    在前端圈子里,对于 Babel,大家肯定都比较熟悉了.如果哪天少了它,对于前端工程师来说肯定是个噩梦.Babel 的工作原理是怎样的可能了解的人就不太多了.本文将主要介绍 Babel 的工作原理以及怎 ...

  3. 内部排序总结之----插入类排序(插入和Shell)

    一.直接插入排序 直接插入排序(straight insertion sort)的做法是: 每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序. 第一趟比较前两个数,然后把第二 ...

  4. Linux下出现Permission denied解决

    今天不想写前言,直接写解决办法 输入命令设置root密码 sudo passwd 得到的答复是 We trust you have received the usual lecture from th ...

  5. Leetcode题目139.单词拆分(动态规划-中等)

    题目描述: 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词. 说明: 拆分时可以重复使用字典中的单词.你可以假设字典 ...

  6. 课下选做作业MySort

    20175227张雪莹 2018-2019-2 <Java程序设计> 课下选做作业MySort 要求 注意:研究sort的其他功能,要能改的动代码,需要答辩 模拟实现Linux下Sort ...

  7. ArcGIS Python 坐标系信息

    ############################################################# import arcpy import os from arcpy impo ...

  8. C realloc

    https://baike.baidu.com/item/realloc/659993?fr=aladdin 也就是说:原地址后面有连续可以空间可以满足需要,则追加在后面,否则开辟新空间,并拷贝数据

  9. jeecg中列表点击单号跳入链接

    效果如图:点击单号,跳到一个新的页面 1.首先列表给一个自定义的js: <t:dgCol title="业务编号"  field="orderCode" ...

  10. kotlin之包

    在kotlin中包的概念在表达方式上与Java完全一样,不过kotlin中的包和目录没有关系,kotlin包仅仅是为了引用文件中的资源而设计的. package loaderman.bar fun p ...