MySQL包含对触发器的支持。触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行。
在MySQL中,创建触发器语法如下:
其中:
trigger_name:标识触发器名称,用户自行指定;
trigger_time:标识触发时机,取值为 BEFORE 或 AFTER;
trigger_event:标识触发事件,取值为 INSERT、UPDATE 或 DELETE;
tbl_name:标识建立触发器的表名,即在哪张表上建立触发器;
trigger_stmt:触发器程序体,可以是一句SQL语句,或者用 BEGIN 和 END 包含的多条语句。
由此可见,可以建立6种触发器,即:BEFORE INSERT、BEFORE UPDATE、BEFORE DELETE、AFTER INSERT、AFTER UPDATE、AFTER DELETE。
另外有一个限制是不能同时在一个表上建立2个相同类型的触发器,因此在一个表上最多建立6个触发器。
MySQL 除了对 INSERT、UPDATE、DELETE 基本操作进行定义外,还定义了 LOAD DATA 和 REPLACE 语句,这两种语句也能引起上述6中类型的触发器的触发。
LOAD DATA 语句用于将一个文件装入到一个数据表中,相当与一系列的 INSERT 操作。
相关文章
MySQL锁(乐观锁、悲观锁、多粒度锁)
锁 并发事务可能出现的情况: 读-读事务并发:此时是没有问题的,读操作不会对记录又任何影响。 写-写事务并发:并发事务相继对相同的记录做出改动,因为写-写并发可能会产生脏写的情况,但是没有一个隔离级别...
MySQL InnoDB索引原理
数据库与I/O原理 数据会持久化到磁盘,查询数据是就会有I/O操作,相对于缓存操作,I/O操作的时间成本相当高昂。 I/O操作的基本单位是一个磁盘页面,比如16KB的页面大小。当数据量比较大时,单表数...
MySQL学习(3)—MySQL常用命令
ps:此随笔基于mysql 5.7.*版本。 准备 net start mysql 启动MySQL服务 net stop mysql 关闭MySQL服务 mysql [-h exit/quit 退出M...
MySQL事务、隔离级别
一、事务简介 事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 二、有关事务操作 MySQL中的事务...
jdbc-使用java连接mysql
package com.cqust; import com.mysql.jdbc.Driver; import java.sql.Connection; import java.sql.DriverM...
MySQL max() min() 函数取值错误
今天日志出现异常,一步一步debug发现SQL语句返回值出错,进一步发现是max()函数返回出错。点击跳转解决办法,赶时间的朋友可以去获得答案。当然我还是希望大伙看看原由。 select max(HT...
centos7安装python
以下操作均在root用户下进行(防止权限不够的问题) 一、查看centos自带的python(python -v) 因为centos自带的是python2.7的版本 二、安装自己想装的python版本...
RadonDB MySQL Kubernetes 2.2.0 发布!
摘要 RadonDB MySQL Kubernetes v2.2.0 于近日发布!该版本开始支持 MySQL 8.0,备份功能优化,并全面提升高可用稳定性。社区同步发起"新版试用赢周边"活动! 致谢 ...
一条SQL更新语句是如何执行的
文章首发于公众号「蝉沐风」,认真写好每一篇文章,欢迎大家关注交流 这是图解MySQL的第2篇文章,这篇文章会通过 一条SQL更新语句的执行流程让大家清楚地明白: 什么是InnoDB页?缓存页又是什么?...
手把手教你定位线上MySQL锁超时问题,包教包会
昨晚我正在床上睡得着着的,突然来了一条短信。 什么?线上的订单无法取消! 我赶紧登录线上系统,查看业务日志。 发现有 MySQL锁超时的错误日志。 不用想,肯定有另一个事务正在修改这条订单,持有这条订...
记录一次数据库CPU被打满的排查过程
1 前言 近期随着数据量的增长,数据库CPU使用率100%报警频繁起来。第一个想到的就是慢Sql,我们对未合理运用索引的表加入索引后,问题依然没有得到解决,深入排查时,发现在 order by id ...
MySQL变量、流程控制和游标
变量、流程控制和游标 变量 在MySQL数据库的存储过程和函数中,可以使用变量来存储查询或计算的中间结果数据,或者输出最终的结果的数据 系统变量 变量由系统定义,属于服务器层面 系统变量的分类 每一个...
Spring boot 项目配置 Maven 资源文件分离打包
需要引入三个Maven插件: maven-jar-plugin:用于打包代码,并去除不需要一起打包的resource文件 maven-assembly-plugin:主要用来打压缩包,配置我们打包后的...
java死锁(Java-level deadlock)
java-level deadlock 如下代码可以模拟java死锁。注意:当出现死锁时,应用程序是无响应的。错误信息: Found one Java-level deadlock: "Thread-...