MySQL触发器详解
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中用old和new表示执行前和执行后的数据,old和new在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触发器详解的更多相关文章
- Mysql触发器详解以及union的使用
---恢复内容开始--- Mysql触发器定义: 当一个表中有insert update delete事件发生,触发一个事件,执行一段代码.作用: 同步数据创建: create trigger 名称 ...
- mysql触发器详解 mysql触发器
目录 21.1. CREATE TRIGGER语法 21.2. DROP TRIGGER语法 21.3. 使用触发程序 MySQL 5.1包含对触发程序的支持.触发程序是与表有关的命名数据库对象,当表 ...
- MySQL权限详解
MySQL权限级别介绍 MySQL权限级别 全局性的管理权限,作用于整个MySQL实例级别 数据库级别的权限,作用于某个指定的数据库上或者所有的数据库上 数据库对象级别的权限,作用于指定的数据库对象上 ...
- MySQL Binlog详解
MySQL Binlog详解 Mysql的binlog日志作用是用来记录mysql内部增删改查等对mysql数据库有更新的内容的记录(对数据库的改动),对数据库的查询select或show等不会被bi ...
- (转)mysql explain详解
原文:http://www.cnblogs.com/xuanzhi201111/p/4175635.html http://yutonger.com/18.html http://www.jiansh ...
- MySQL 数据类型 详解
MySQL 数据类型 详解 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 My ...
- mysql存储过程详解
mysql存储过程详解 1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的S ...
- mysql 存储过程详解 存储过程
mysql存储过程详解 1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成 ...
- MySQL配置文件详解
MYSQL 配置文件详解 “全局缓存”.“线程缓存”,全局缓存是所有线程共享,线程缓存是每个线程连接上数据时创建一个线程(如果没有设置线程池),假如有200连接.那就是200个线程,如果参数设定值是1 ...
随机推荐
- python生产者消费者模型优点
生产者消费者模型:解耦,通过队列降低耦合,支持并发,生产者和消费者是两个独立的并发体,他们之间使用缓存区作为桥梁连接,生产者指望里丢数据,就可以生产下一个数据了,消费者从中拿数据,这样就不会阻塞,影响 ...
- python--Selenium-模拟浏览器
python--Selenium-模拟浏览器基本使用from selenium import webdriverfrom selenium.webdriver.common.by import Byf ...
- java学习笔记27(File类)
File类: 定义:文件和目录径的抽象表示形式, Java中将路径或者文件封装成File对象 1.File类的静态成员变量 package com.zs.Demo2; import java.io.F ...
- Python 函数的嵌套
# 函数的互相调用 def func1(): print("我是神器的func1") def func2(): func1() print("我是神器的func2&quo ...
- JavaScript Dom基础-9-Dom查找方法; 设置DOM元素的样式; innerHTML属性的应用; className属性的应用; DOM元素上添加删除获取属性;
JavaScript Dom基础 学习目标 1.掌握基本的Dom查找方法 domcument.getElementById() Domcument.getElementBy TagName() 2.掌 ...
- python中把数据存入csv中
import csv # 如果不添加newline=""的话,就会每条数据中间都会有空格行 with open("test.csv","w" ...
- Unity 3D读取Excel表格、导入信息、导出Json
Unity 3D读取/导入Excel表格 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar ...
- mask-code-python
tf.sqeeze: 给定张量输入,此操作返回相同类型的张量,并删除所有尺寸为1的尺寸. 如果不想删除所有尺寸1尺寸,可以通过指定squeeze_dims来删除特定尺寸1尺寸.如果不想删除所有大小是1 ...
- LSOF查看linux中文件打开情况
如何查看linux中文件打开情况 前言 我们都知道,在linux下,“一切皆文件”,因此有时候查看文件的打开情况,就显得格外重要,而这里有一个命令能够在这件事上很好的帮助我们-它就是lsof. lin ...
- 2018.4.23 git删除已经add的文件
使用 git rm 命令即可,有两种选择, 一种是 git rm --cached "文件路径",不删除物理文件,仅将该文件从缓存中删除: 一种是 git rm --f " ...