博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MYSQL:基础——触发器
阅读量:4309 次
发布时间:2019-06-06

本文共 1264 字,大约阅读时间需要 4 分钟。

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

你可能感兴趣的文章
Financial Analysis: Stock Market Prediction Using Deep Learning Algorithms
查看>>
Windows消息目录
查看>>
jquery miniui 学习笔记
查看>>
xampp中tomcat服务器无法启动
查看>>
【LeetCode】502. IPO
查看>>
抚顺烈士
查看>>
java亦或(^)
查看>>
采用多线程方式,解决由于查询等待造成winfrom假死问题
查看>>
什么是信令?什么是信令网?(转)
查看>>
原!!mysql,几十万条数据中随机抽取1万以内的数据
查看>>
SQLMAP之tamper详解
查看>>
OpenCV-跟我学一起学数字图像处理之中值滤波
查看>>
使用cookie来做身份认证 转载https://www.cnblogs.com/sheldon-lou/p/9545726.html
查看>>
ASP.NET MVC学习系列(二)-WebAPI请求 转载https://www.cnblogs.com/babycool/p/3922738.html
查看>>
MemCache在.NET中使用Memcached.ClientLibrary详解 转发 https://www.cnblogs.com/li150dan/p/9529112.html...
查看>>
DB2查找替换字符串
查看>>
java可变参数
查看>>
SQLServer2008设置开启远程连接
查看>>
C#连接Sybase数据库,Anywhere 8
查看>>
CSS layout入门
查看>>