MYSQL---触发器简单了解
触发器 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---触发器简单了解的更多相关文章
- MySQL 触发器简单实例 - 转载
MySQL 触发器简单实例 触发器:可以更新,删除,插入触发器,不同种类的触发器可以存在于同一个表,但同种类的不能有多个.一个更新.一个删除是可以共存的. ~~语法~~ CREATE TRIGGER ...
- MySQL 触发器简单实例
~~语法~~ CREATE TRIGGER <触发器名称> --触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象.{ BEFORE | ...
- 【转】mysql触发器的实战(触发器执行失败,sql会回滚吗)
1 引言Mysql的触发器和存储过程一样,都是嵌入到mysql的一段程序.触发器是mysql5新增的功能,目前线上凤巢系统.北斗系统以及哥伦布系统使用的数据库均是mysql5.0.45版本,很多程 ...
- redis作为mysql的缓存服务器(读写分离,通过mysql触发器实现数据同步)
一.redis简介Redis是一个key-value存储系统.和Memcached类似,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录 ...
- mysql触发器的作用及语法
触发器是一种特殊的存储过程,它在插入,删除或改动特定表中的数据时触发运行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力. 数据库触发器有下面的作用: 1.安全性.能够基于数据库的值使用户具有 ...
- MYSQL触发器在PHP项目中用来做信息备份、恢复和清空
案例:通过PHP后台代码可以将员工的信息删除,将删除的员工信息进行恢复(类似于从回收站中恢复员工信息),并且还可以将已经删除的员工进行清空(类似于清空回复站的功能). 思路:要有一张员工表,还要有一张 ...
- MySQL触发器在PHP项目中用来做信息备份、恢复和清空的方法介绍
案例:通过PHP后台代码可以将员工的信息删除,将删除的员工信息进行恢复(类似于从回收站中恢复员工信息),并且还可以将已经删除的员工进行清空(类似于清空回复站的功能). 思路:要有一张员工表,还要有一张 ...
- 关于mysql触发器和存储过程的理解
内容源自:一篇很棒的 MySQL 触发器学习教程 一.触发器概念 触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊 ...
- MySQL触发器的正确使用与案例分析
以下的文章主要向大家讲述的是MySQL触发器的实际使用详细说明与实际案例分析,同时本文也列举了一些在MySQL触发器的实际式操作中的代码,以下就是文章的详细内容介绍,望大家借鉴. 触发器案例 mysq ...
- 一篇很棒的 MySQL 触发器学习教程
一.触发器概念 触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动 ...
随机推荐
- 2016 NEERC, Northern Subregional Contest G.Gangsters in Central City(LCA)
G.Gangsters in Central City 题意:一棵树,节点1为根,是水源.水顺着边流至叶子.该树的每个叶子上有房子.有q个询问,一种为房子u被强盗入侵,另一种为强盗撤离房子u.对于每个 ...
- 前端工程师需要掌握的 Babel 知识
在前端圈子里,对于 Babel,大家肯定都比较熟悉了.如果哪天少了它,对于前端工程师来说肯定是个噩梦.Babel 的工作原理是怎样的可能了解的人就不太多了.本文将主要介绍 Babel 的工作原理以及怎 ...
- 内部排序总结之----插入类排序(插入和Shell)
一.直接插入排序 直接插入排序(straight insertion sort)的做法是: 每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序. 第一趟比较前两个数,然后把第二 ...
- Linux下出现Permission denied解决
今天不想写前言,直接写解决办法 输入命令设置root密码 sudo passwd 得到的答复是 We trust you have received the usual lecture from th ...
- Leetcode题目139.单词拆分(动态规划-中等)
题目描述: 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词. 说明: 拆分时可以重复使用字典中的单词.你可以假设字典 ...
- 课下选做作业MySort
20175227张雪莹 2018-2019-2 <Java程序设计> 课下选做作业MySort 要求 注意:研究sort的其他功能,要能改的动代码,需要答辩 模拟实现Linux下Sort ...
- ArcGIS Python 坐标系信息
############################################################# import arcpy import os from arcpy impo ...
- C realloc
https://baike.baidu.com/item/realloc/659993?fr=aladdin 也就是说:原地址后面有连续可以空间可以满足需要,则追加在后面,否则开辟新空间,并拷贝数据
- jeecg中列表点击单号跳入链接
效果如图:点击单号,跳到一个新的页面 1.首先列表给一个自定义的js: <t:dgCol title="业务编号" field="orderCode" ...
- kotlin之包
在kotlin中包的概念在表达方式上与Java完全一样,不过kotlin中的包和目录没有关系,kotlin包仅仅是为了引用文件中的资源而设计的. package loaderman.bar fun p ...