MYSQL:基础——触发器

MYSQL基础——触发器

引入触发器

什么是触发器

如果你想要某条语句(或某些语句)在事件发生时自动执行。比如: 每当订购一个产品时,都从库存数量中减去订购的数量;无论何时删除一行,都在某个存档表中保留一个副本。就需要用到触发器。触发器是MySQL响应以下任意语句而自动执行的一条MySQL语句(或位于BEGIN和END语句之间的一组语句):

 DELETE;
 INSERT;
 UPDATE;

说明:

  其他MySQL语句不支持触发器。只有表才支持触发器、视图不支持,临时表也不支持。

创建触发器

触发器用CREATE TRIGGER 语句创建,一条伪代码如下

CREATE TRIGGER newType AFTER INSERT ON ms_articletype for each row select 'Product Added';
Error Code: 1415. Not allowed to return a result set from a trigger 

创建一个触发器需要给出4条信息:

  1. 唯一的触发器名 newType
  2. 触发器关联的表 ms_articletype
  3. 触发器应该响应的活动 DELETE、INSERT、UPDATE
  4. 触发器何时执行(AFTER、BEFORE) 

删除触发器:

触发器不支持更新或者覆盖,为了修改一个触发器,必须先删除它,然后重新创建它。

DROP TRIGGER newtype;

使用触发器

INSERT触发器

INSERT触发器在INSERT语句执行之前或者之后执行,需要知道以下几点:

  1. 在INSERT触发器代码内,可引用一个名为NEW的虚拟表,访问被插入的行
  2. 在BEFORE INSERT触发器中,NEW中的值也可以被更新(允许更改被插入的值)。即,通过NEW来修改被插入的数据。
  3. 对于AUTO_INCRMENT列,NEW在INSERT执行之前包含0,在执行之后包含新的自动生成值。 

实例:

  

DELETE触发器

说明:

  1. 在DELETE触发器代码内,你可以引用一个名为OLD的虚拟表,访问被删除的行。
  2. OLD表中的数据全是只读的,不能被修改。  

实例:

  

UPDATE触发器

说明:

  1. 在UPDATE中,你可以使用OLD和NEW两张表。
  2. 在BEFORE UPDATE触发器中,NEW中的值可能也被更新(允许更改将要用于UPDATE语句中的值)
  3. OLD表中的值是只读的,不可以被更改。

实例:

    

 退货实例

CREATE TRIGGER updateGoods AFTER UPDATE ON ms_sale for each row update ms_order SET or_number=or_number+(OLD.sale_number-NEW.sale_number) WHERE or_id=OLD.sale_or_id;

 

转载于:https://www.cnblogs.com/MrSaver/p/8012137.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267938.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

双线macd指标参数最佳设置_常用指标知多少(二)

均线日期的选择种类有很多,一般行情软件常用的均线日期是5日、10日、20日、30日和60日,一般也会默认是这些日期,也有的加上了长线的120日和250日,很好理解,因为每周交易日是5天,所以以倍数做比较。使用海龟…

VI高级命令集锦

1.交换两个字符位置xp2.上下两行调换ddp3.把文件内容反转:g/^/m0/ (未通过)4.上下两行合并 J5.删除所有行 dG6.从当前位置删除到行尾d$7.从当前位置复制到行尾y$ 如果要粘贴到其他地方 p 就可以了由于vi 是建立在 EX 上的 所以 当键入 : 时就来到了 EX 命令状态 8.:ab string s…

图片合成gif_使用在线图片工具处理静态和动态图片的技巧

图片一般分为两种,一种是静态图片,常用的图片格式有jpg,png等。处理静态图片可用用手机自己带的图片处理工具处理,也能够使用线上的在线作图工具来进行操作,比如找图设计,懒设计,稿定设计等设计…

Redis源代码分析之sds, 动态数组

Redis是用C语言编写的。C语言处理字符串一向是个难点。很容易出现内存越界问题。 其它高级语言很容易实现的字符串拼接,在C这里却是百般艰难。因为需要实现计算出字符串所占内存的大小。即不能过大(浪费内存),也不能太小&#xff…

kaldi windows安装_kaldi在Windows下的使用

其实不是特别推荐在Windows下使用kaldi,因为在egs下所有的脚本都无法运行,我也是弄了很久才在Windows下配置好kaldi,都一度差点弃坑。就连官方也说There is no commitment to support Windows. The Windows port of Kaldi is targeted at exp…

C#委托的异步调用[转]

本文将主要通过“同步调用”、“异步调用”、“异步回调”三个示例来讲解在用委托执行同一个“加法类”的时候的的区别和利弊。 首先,通过代码定义一个委托和下面三个示例将要调用的方法: /*添加的命名空间using System.Threading;using System.Runtime.…

[Python] isinstance() for checking object type

isinstance("foo", str) isinstance(1, int) isinstance(4.0, float) 转载于:https://www.cnblogs.com/Answer1215/p/8018722.html

钉钉微应用怎么进入_蓝凌携手钉钉走进越秀地产,零距离热聊企业数字化转型...

8月18日,蓝凌携手钉钉一同走进越秀地产,举办了《地产行业数字化实战闭门分享会》主题活动,与30余名嘉宾欢聚一堂,体验智慧管理实践与数字工作模式,探索企业数字化转型升级之道。越秀地产CIO陈磊、越秀地产信息总监郑毅…

mysql5.7半自动同步设置【转】

mysql的主从复制主要有3种模式: a..主从同步复制:数据完整性好,但是性能消耗高 b.主从异步复制:性能消耗低,但是容易出现主从数据唯一性问题 c.主从半自动复制:介于上面两种之间。既能很好的保持完整性&…

virsh 关机_kvm虚拟机不能使用virsh shutdownw命令关闭虚拟机的解决方法

今天笔者在对kvm虚拟机进行管理时,使用virsh shutdown命令关闭指定的虚拟机时,发现虽然有如下的提示,但其实虚拟机却一直不会真正的关闭。经过查看virsh命令帮助和上网查询,才得知virsh shutdown命令使用发送acpi指令来控制虚拟机…

Android之旅---广播(BroadCast)

什么是广播在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。我们拿广播电台来做个比方。我们平常使用收音机收音是这样的:许许多多不同的广播电台通过特定的频率来发送他们的内容,而我们用户只需要将频率调成和广播电台…

python牛客网编程题_【面经】小米软件开发一面(python)面经 2020 2020

作者:JessyTsuihttps://www.nowcoder.com/discuss/580721?type2&order0&pos15&page1&channel-1&source_iddiscuss_tag_nctrack来源:牛客网小米软件开发一面(python)面经一共三轮技术面,第四轮是HR面,已OC&am…

IDS与IPS

IDS是英文“Intrusion Detection Systems”的缩写,中文意思是“***检测系统”。专业上讲就是依照一定的安全策略,对网络、系统的运行状况进行监视,尽可能发现各种***企图、***行为或者***结果,以保证网络系统资源的机密性、完整性…

c# 数组和集合

数组是最为常见的一种结构,是相同类型的、用一个标识符封装到一起的j基本类型数据序列或对象序列,可以用一个统一的数组名和下标来唯一确定数组中的元素。实质上数组是一个简单的线性序列,因此数组访问起来很快。而集合可以看成一种特殊的数组…

和vs版本关系_栈局部变量优化探究,意外发现了 vs 的一个 bug ?

缘起 我在《栈又溢出了》一文中记录了一个奇怪的栈溢出问题。虽然解决了,但是总感觉哪里不太合理。我想,vs 一定有一个合理的设置。一起折腾起来吧!查找工程设置 本以为能找到某个编译选项对局部变量占用内存的行为进行控制。看遍了工程设置也…

Visual C++ 时尚编程百例009(响应键盘)

按钮消息WM_KEYDOWN,WM_CHAR,WM_KEYUP在CXXXDoc.h中添加变量CString Text;在构造函数中初始化Cvc1001Doc::Cvc1001Doc(){ // TODO: 在此添加一次性构造代码 Text_T("");}右击CXXXView类->属性->消息->WM_CHARvoid Cvc1001View::OnChar(UINT nChar, UINT nRe…

在ubuntu 16.04上安装tensorflow,并测试成功

用下面代码测试安装: 1 #! /usr/bin/python2 # -*- coding: utf-8 -*-3 4 import tensorflow as tf5 import numpy6 import matplotlib.pyplot as plt7 rng numpy.random8 9 learning_rate 0.01 10 training_epochs 1000 11 display_step 50 12 #数据集x 13 tra…

redis客户端连接数量_实战解析无所不知的Redis拓展应用——Info,进阶学习,无所不能...

前言学习是一个持续的过程。像咱们一直在更新的Redis学习内容,由基础结构,到原理应用,再到集群搭建,了解的够充分了,咱们接着又介绍Redis拓展应用,将知识面拓宽,毕竟技术都是相通的,…

诡异的防火墙故障,能PING通,但访问ORACLE不稳定

上周四我们的IDC核心数据区到DMZ区的防火墙经历了十分诡异的故障。 虽然我从一开始就断定非ORACLE问题,因为连接核心数据区的多个ORACLE数据库的应用都无一例外的出现了相同的问题,如果三个以上ORACLE能同时出想这么严重的问题,那么我想ORACL…

【Excle数据透视】如何用含有单元格的数据来创建数据透视

取消合并单元格,填充相同内容项,然后创建数据透视表. 如下图:需要使用数据创建数据透视表 步骤一 开始→格式刷,然后对单元格区域G2:G15使用格式刷功能,保留合并单元格格式 步骤二 选中A2:A18区…