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. Collection集合复习方法回顾

    Collection集合方法: add()  //添加元素 remove()    //移除元素 size()                                     //返回集合长度 ...

  2. python day02 作业答案

    1. (1).false   (2).false 2. (1).8  (2).4 3. (1).6  (2).3  (3).false (4).3   (5).true   (6).true  (7) ...

  3. wx小程序横向滚动

    .subOper>scroll-view{ margin-bottom: 22rpx; width: 100%; white-space: nowrap; } /* subClass 是scro ...

  4. Semaphore计数信号量

    ExecutorService exec = Executors.newCachedThreadPool(); final Semaphore semp = new Semaphore(5); for ...

  5. mysql创建表单脚本

    如图所示,T_SENSOR_QC_CONFIG_GLOBAL_ITEM表通过外键CATEGORY_ID连接T_SENSOR_QC_CONFIG_CAT表.COMMENT为字段或表单添加注释.

  6. Caution: request is not finished yet

    /********************************************************************** * Caution: request is not fi ...

  7. input标签(单选框和复选框)

    单选框: <form> <input type="radio" name="..." value="..." checke ...

  8. Gym -102007 :Benelux Algorithm Programming Contest (BAPC 18) (寒假自训第5场)

    A .A Prize No One Can Win 题意:给定N,S,你要从N个数中选最多是数,使得任意两个之和不大于S. 思路:排序,然后贪心的选即可. #include<bits/stdc+ ...

  9. Arcgis API for JS——打印控件乱码

    在通过Arcgis API for JS编写打印控件进行地图下载时,总发现地图字体乱码,如下图: 解决方法: 在装有ArcGIS Server,要调用服务的电脑或服务器上找到下图文件夹

  10. 软件安装配置笔记(一)——Oracle及PLSQL Developer的安装与配置

    一.Oracle: Oracle服务器端或桌面端可以创建本地的Oracle数据库,而Oracle客户端是用来远程连接其他服务器或电脑上的Oracle服务器端或桌面端的,安装客户端软件只需配置网络连接文 ...