13.Mysql触发器
13.触发器
13.1 创建触发器
定义:触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。
语法:
create trigger 触发器名称 触发时机 触发事件 on 表名 for each row
begin
触发动作;
end$$
说明:
触发时机分为before和after,表示触发器在DML语句之前还是之后触发。
触发事件分为insert、update、delete,表示触发器被特定类型的DML语句(insert、update、delete)触发。
触发动作是触发器所要执行的语句集合。
伪记录OLD和NEW,用来表示变前行和变后行,只能在行级触发器内使用。
触发事件函数inserting、updating、deleting,用来区分不同的触发事件以执行不同的触发动作。
注意:
mysql目前只支持行级触发器,暂不支持语句级触发器。
mysql目前对同一个表相同的触发时机和触发事件下只能定义一个触发器。
mysql目前不支持触发事件函数(inserting、updating、deleting),所以不同的触发事件需要单独建立触发器。
对于插入或更新语句(insert into ... on duplicate key update ...),在新增重复数据时会触发before insert、before update、after update类型相关的触发器。
例子:
13.2 删除触发器
语法:
drop trigger schema.trigger_name;
说明:
一次可以删除一个触发器;
schema未指定时默认为当前数据库。
13.3 查看触发器
查看全部触发器:
show triggers;
查看特定触发器:
select * from information_schema.triggers where trigger_name='***';
13.4 触发器的使用
触发动作限制:
触发程序不能调用将数据返回给客户端的存储程序(触发器里不能调用函数),
也不能使用采用call语句的动态sql语句(不能使用动态sql),
不能在触发器中使用以显式或隐式方式开始或结束事务的语句,如Start transaction、commit、rollback等(不能进行事务处理)。
触发器允许存储程序通过参数将数据返回触发程序(可以调用存储过程)。
触发顺序:before触发器--》DML语句--》after触发器。
触发器对事务表进行操作时,整个操作作为一个事务,如果发生异常,操作将被全部回滚;
触发器对非事务表进行操作时,整个操作不会作为一个事务,如果发生异常,操作将被中断,已更新的记录不进行回滚。
13.5 小结
不要将应用的处理逻辑过多的依赖于触发器来处理。
13.Mysql触发器的更多相关文章
- redis作为mysql的缓存服务器(读写分离,通过mysql触发器实现数据同步)
一.redis简介Redis是一个key-value存储系统.和Memcached类似,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录 ...
- MySQL触发器在PHP项目中用来做信息备份、恢复和清空的方法介绍
案例:通过PHP后台代码可以将员工的信息删除,将删除的员工信息进行恢复(类似于从回收站中恢复员工信息),并且还可以将已经删除的员工进行清空(类似于清空回复站的功能). 思路:要有一张员工表,还要有一张 ...
- mysql触发器Before和After的区别
Before与After区别:before:(insert.update)可以对new进行修改. after不能对new进行修改. ...
- 【mysql】mysql触发器使用示例
mysql触发器 时间点:before/after 触发事件: update/delete/insert 时间点+触发事件:构成一个完整的触发器的触发时机: 一个触发时机最多只能由1个Trigger: ...
- MySQL 触发器示例
简介: MySQL 触发器 这次实验是在一台 MySQL Slave 上进行的,事实证明:从库添加数据库.表.插入.删除数据等,不会导致主从失败. 一.创建实验数据库.表 mysql > cre ...
- MySQL触发器的详细教学与综合分析
所有知识体系文章,GitHub已收录,欢迎老板们前来Star! GitHub地址: https://github.com/Ziphtracks/JavaLearningmanual MySQL触发器 ...
- MySQL触发器如何正确使用
MySQL触发器如何正确使用 2010-05-18 15:58 佚名 博客园 字号:T | T 我们今天主要向大家介绍的是MySQL触发器进行正确使用,其中包括对MySQL触发器发器的语句创建,触发时 ...
- 【转】mysql触发器的实战(触发器执行失败,sql会回滚吗)
1 引言Mysql的触发器和存储过程一样,都是嵌入到mysql的一段程序.触发器是mysql5新增的功能,目前线上凤巢系统.北斗系统以及哥伦布系统使用的数据库均是mysql5.0.45版本,很多程 ...
- mysql触发器的例子--插入前更新数据
本文介绍下,一个mysql触发器的例子,在数据插入前更新相关内容,有需要的朋友参考下. mysql触发器的例子,如下: view source print? 001 mysql> CREATE ...
随机推荐
- ANg-线性回归算法
线性回归算法 linear regression 对于线性回归模型,我们期望对于样本数据集,通过假设函数,得出目标值 代价函数 m在这里指的是训练样本的数量 所以我们的目的就是得出代价函数(平方误差代 ...
- (转)2018几大主流的UI/JS框架——前端框架 [Vue.js(目前市场上的主流)]
https://blog.csdn.net/hu_belif/article/details/81258961 2016年开始应该是互联网飞速发展的几年,同时也是Web前端开发非常火爆的一年,Web ...
- java语言 找出文章中出现次数最多的单词
package english; import java.io.File; import java.util.Scanner; import java.io.FileNotFoundException ...
- 关于WPS查看PDF文件操作问题
自己一直使用WPS打开PDF类的文档,但是使用过程中,存在下面的几个问题: pdf 如何查看当前页码pdf 如何根据目录跳转到指定页WPS 查看pdf 如何跳转到指定页 后来百度后,可以考虑将PDF转 ...
- JDBC连接各种数据库的方法,连接MySql,Oracle数据库
JDBC连接各种数据库的方法: JDBC编程步骤: 1.导入jar包 2.注册驱动 3.获取数据库连接对象 4.定义SQL语句 5.获得执行SQL语句对象statemnet 6.执行SQL语句 7.处 ...
- 微信小程序开发攻略
首先,需要明确的一点是,小程序开发就是前端开发的一个小分支. 其次,小程序开发框架是一个精简版的React ,并且开发比较简单 . 第一步 获取AppId 小程序注册入口http://https:// ...
- Python全栈开发 列表, 元组 数据类型知识运用及操作 range知识
一.列表 1.什么是列表? 列表是一个可变类型,由 [ ] 表示,每一项元素用逗号隔开.列表能够装大量的数据,可以装对象的对象. 2.列表的索引和切片. 列表和字符串一样,也有索引和切片.只不过列表 ...
- 七、Builder 建造器模式
需求:需要组装复杂结构的实例 代码清单: Builder 接口: public abstract class Builder { public abstract void makeTitle(Stri ...
- windows 查询端口占用 杀掉进程
参考 https://www.cnblogs.com/lynn-li/p/6077993.html netstat -ano | findstr "8001" taskkill / ...
- jxls2 java.lang.NegativeArraySizeException
某个单元格使用jx:each报这个错误. 内部代码,创建一个二维数组时,传了一个负值进去 解决办法 将这个单元格删除,重新编写批注