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

MYSQL:基础——触发器相关推荐

  1. (2.13)Mysql之SQL基础——触发器

    (2.13)Mysql之SQL基础--触发器 关键词:Mysql触发器 二.触发器 MySQL语句在需要时被执行,存储过程也是如此,如果希望某条语句(或某些语句)在事件发生时自动执行,这就需要用到触发 ...

  2. MySql基础篇---004 其它数据库对象篇:视图,存储过程与函数,变量、流程控制与游标 ,触发器

    第14章_视图 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 常见的数据库对象 对象 描述 表(TABLE) 表是存储数据的逻辑单元,以行和列的形 ...

  3. mysql latid1_MySQL触发器的基础知识分享

    说明: MySQL的触发器和存储过程一样,都是嵌入到MySQL的一段程序,是MySQL 5版本新增的功能. 本文介绍: 触发器的类型和基本使用方法,讲述了触发器使用中容易产生的误区,从MySQL源码中 ...

  4. MySQL基础总结(一)

    MySQL基础总结(一) 文章目录 MySQL基础总结(一) 一.MySQL架构 1.MySQL架构图 2.SQL语句在MySQL中的执行流程 二.存储引擎 1.查看存储引擎 2.设置存储引擎 3.存 ...

  5. mysql latid1_mysql触发器的实战经验

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

  6. Mysql基础代码(不断完善中)

    Mysql基础代码,不断完善中~ /* 启动MySQL */ net start mysql/* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码/* 跳过权限验证 ...

  7. mysql缺少函数_总结零散的 MySQL 基础知识

    前言 在日常开发中,一些不常用且又比较基础的知识,过了一段时间之后,总是容易忘记或者变得有点模棱两可.本篇主要记录一些关于MySQL数据库比较基础的知识,以便日后快速查看. SQL命令 SQL命令分可 ...

  8. Mysql基础篇(1)—— 基础概念、DML基本语法和表连接

    前言 Mysql基础篇相关的内容是看了康师傅的视频做的笔记吧 数据库相关概念 DB: 数据库(Database) ​ 存储数据的仓库,本质是一个文件系统.它保存了一系列有组织的数据. DBMS:数据库 ...

  9. MySQL——基础知识

    目录 一.SQL组成 1)数据定义语言(Data Definition Language,DDL) 2)数据操作语言(Data Manipulation Language,DML) 3)数据查询语言( ...

最新文章

  1. 大话中文文本分类之前数据处理
  2. java正则匹配非html字符串_java正则表达式去除html中所有的标签和特殊HTML字符(以开头的)...
  3. 程序员的算法课(1)-算法概述
  4. pycharm安装带激活码2018
  5. 【ElasticSearch】Es 源码之 MonitorService 源码解读
  6. gcd常见结论及gcd与斐波那契结合--hdu6363.
  7. Android自带硬解码解码类型说明MediaCodec使用必看
  8. sql与ORACLE链接服务器相互访问方法
  9. linux 安装redies
  10. 浪潮服务器pxe安装操作系统,规划 PXE 启动的操作系统部署
  11. 如何选择合适的离心机,有哪些重要参数——TFN FUP LB6CM 落地式低速大容量冷冻离心机
  12. 开源视频云转码 m3u8_8种开源视频游戏
  13. PLC可编程控制器、变频调速综合实验装置(网络型)
  14. 走进tensorflow第六步——拟合一元二次函数
  15. Java Web之第11章JSP开发模型
  16. 微信小程序使用image组件显示图片的方法
  17. [solr] solr Similarity:切换不同相似度计算方法
  18. pycharm异常问题之Unable to save settings: Failed to save settings. Please restart PyCharm
  19. Drupal9自定义module添加多个定时任务
  20. 怎样配置外汇ea服务器运行,外汇EA如何在MT4上运行?以及如何挂到服务器?

热门文章

  1. ecshop 广告设置
  2. 在WPF中处理Windows消息
  3. (转)用 Fiddler 看看 UpdatePanel 发生了什么
  4. CSS3笔记之基础篇(二)颜色和渐变色彩
  5. es6 --- Reflect的静态方法
  6. ES5-拓展 原型链、继承、类
  7. Python-爬虫-requests
  8. mysql简单创建数据库权限(待修改备注)
  9. .NET Core TDD 前传: 编写易于测试的代码 -- 全局状态
  10. centos 安装mysql时错误unknown variable #39;defaults-file=/opt/redmine-2.6.0-2/mysql/my.cnf#39;...