MySQL触发器

触发器是特殊的存储过程。不同的是,触发器不需要手动调用。只要当预定义的事件发生时,会被MySQL自动调用。主要用于满足复杂业务的规则和需求。

一、创建触发器

1、创建只有一个执行语句的触发器,语法如下:

CREATE TRIGGER trigger_name trigger_time trigger_event
ON tab_name FOR EACH ROW trigger_stmt

其中,trigger_name是标识触发器名称。trigger_time指定触发时机,可以指定before或after。trigger_event标识触发事件,包括INSERT、UPDATE、和DELETE;tab_name标识建立触发器的表名,即在哪张表上建立触发器。trigger_stmt是触发器执行的语句。

触发器类型 触发触发器的语句
INSERT触发器 INSERT、 LOAD DATA、REPLACE
UPDATE触发器 UPDATE
DELETE触发器 DELETE、 REPLACE

load data语句是将文件的内容插入到表中,相当于是insert语句,而replace语句在一般的情况下和insert差不多,但是如果表中存在primary 或者unique索引的时候,如果插入的数据和原来的primary key或者unique相同的时候,会删除原来的数据,然后增加一条新的数据,所以有的时候执行一条replace语句相当于执行了一条delete和insert语句

例:

CREATE TABLE account (acct_num int, amount DECIMAL(10,2));
CREATE TRIGGER ins_sum BEFORE INSERT on account
FOR EACH ROW SET @sum = @sum + NEW.amount;

首先创建一个表account。在向表插入数据前,计算所有新插入的account表的amount值和。

说明:在MySQL中用oldnew表示执行前和执行后的数据,oldnew在oracle中表示执行前的行,和执行后的行。

触发器类型 NEW和OLD的使用
INSERT触发器 NEW表示将要或已经增加的数据
UPDATE触发器 OLD表示将要或已经被删除的数据,NEW表示将要或已经修改的数据
DELETE触发器 OLD表示将要或已经删除的数据

2、创建有多个执行语句的触发器

创建多个执行语句的触发器的语法如下:

CREATE TRIGGER trigger_name trigger_time trigger_event
ON tab_name FOR EACH ROW
BEGIN
语句执行列表
END;

二、查看触发器

查看触发器是指查看数据库中已存在的触发器的定义,状态和语法信息等。可以通过命令来查看已经创建的触发器。

1、show triggers语句查看触发器信息,语法如下:

SHOW TRIGGERS;

2、在triggers表中查看触发器的信息。在MySQL中所有触发器的定义都存在information_schema数据库的triggers表中,语法如下:

select * from information_schema.triggers where ...

三、删除触发器

使用drop语句可以删除MySQL中定义的触发器,语法格式如下:

DROP TRIGGER trigger_name;

MySQL触发器详解的更多相关文章

  1. Mysql触发器详解以及union的使用

    ---恢复内容开始--- Mysql触发器定义: 当一个表中有insert update delete事件发生,触发一个事件,执行一段代码.作用: 同步数据创建: create trigger 名称 ...

  2. mysql触发器详解 mysql触发器

    目录 21.1. CREATE TRIGGER语法 21.2. DROP TRIGGER语法 21.3. 使用触发程序 MySQL 5.1包含对触发程序的支持.触发程序是与表有关的命名数据库对象,当表 ...

  3. MySQL权限详解

    MySQL权限级别介绍 MySQL权限级别 全局性的管理权限,作用于整个MySQL实例级别 数据库级别的权限,作用于某个指定的数据库上或者所有的数据库上 数据库对象级别的权限,作用于指定的数据库对象上 ...

  4. MySQL Binlog详解

    MySQL Binlog详解 Mysql的binlog日志作用是用来记录mysql内部增删改查等对mysql数据库有更新的内容的记录(对数据库的改动),对数据库的查询select或show等不会被bi ...

  5. (转)mysql explain详解

    原文:http://www.cnblogs.com/xuanzhi201111/p/4175635.html http://yutonger.com/18.html http://www.jiansh ...

  6. MySQL 数据类型 详解

    MySQL 数据类型 详解 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 My ...

  7. mysql存储过程详解

    mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的S ...

  8. mysql 存储过程详解 存储过程

    mysql存储过程详解 1.      存储过程简介         我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成 ...

  9. MySQL配置文件详解

    MYSQL 配置文件详解 “全局缓存”.“线程缓存”,全局缓存是所有线程共享,线程缓存是每个线程连接上数据时创建一个线程(如果没有设置线程池),假如有200连接.那就是200个线程,如果参数设定值是1 ...

随机推荐

  1. http 请求头部解析

    作者:知乎用户链接:https://www.zhihu.com/question/42696895/answer/109035792来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  2. 中文字符utf-8编码原则

    UTF-8是一种变长字节编码方式.对于某一个字符的UTF-8编码,如果只有一个字节则其最高二进制位为0:如果是 多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的位数,其余各字 ...

  3. Maven Speed Up

    收录架构 proxy代理仓库 不支持仓库搜索功能 收录版本 所有版本 更新时间 每24小时更新一次 使用说明 一.在maven软件中使用 以Maven 3.5.2为例: 打开maven配置文件 ./a ...

  4. vue学习--自定义全局vue组件

    文档目录: |--components |-loading(组件文件夹) |-loading.vue (loading组件核心) |-index.js //配置导出组件,并且install 主要配置到 ...

  5. Python实现简单的udp打洞(P2P)

    UDP穿越NAT的具体设计 首先,Client A登录服务器,NAT 1为这次的Session分配了一个端口60000,那么Server S收到的Client A的地址是200.0.0.132:600 ...

  6. Linux命令学习之路——文档权限管理:chmod

    使用权限:所有角色 使用方式:chmod [ -cfvR ] [ --help ] [ --version ] mode file... 作用:该命令用于在Linux中管理和变更角色对文档的存取权限 ...

  7. directive例子1

    (function() { 'use strict'; angular.module('app.widgets') .directive('confirm', ['confirm2', 'toastr ...

  8. lame定理求欧几里得算法的求余和赋值次数

    根据lame定理,根据欧几里得算法求(a,b)的最大公因数过程如下(假设a>b):

  9. box布局中文字溢出问题

    如果不设置-webkit-box-flex:1:会溢出,设置width也行,在电脑上模拟可能会有问题,手机上没问题

  10. webapi core2.1 IdentityServer4.EntityFramework Core进行配置和操作数据

    https://identityserver4.readthedocs.io/en/release/quickstarts/8_entity_framework.html 此连接的实践 vscode ...