MySQL - 触发器
一、概述
Mysql 允许通过触发器、存储过程、函数的形式来存储代码。
触发器可以让你在执行 Insert、Update、Delete的时候,执行一些特定的操作。可以在Mysql中指定是在Sql语句执行之前触发还是执行后触发。
二、使用触发器需要注意的点
对每一个表的每一个事件,最多只能定义一个触发器(换句话说,不能在AFTER INSERT上定义两个触发器)。
Mysql只支持“基于行的触发”,也就是说,触发器始终是针对一条记录的,而不是针对整个SQL语句的。所以,如果变更的数据集非常大,效率将会很低。
三、使用
1、基本说明
create trigger 【触发器名称】【触发器的执行时间点】【执行的动作点】 on 【表名】for each row [函数 或者动作]
说明:
触发器执行时间:before、after
执行的动作点:insert, update, delete
函数:包在 begin、end 之间
动作:update、insert
2、使用
create triggerupdate_product_after
after update onproduct
for each row
beginupdate product set last_update_time = TIMESTAMP-- 代码区域
end;
四、说明
由于目前大多数的 PHP 框架已经内置了事件触发的函数,所以我们项目中已经很少再用到 Mysql 本身的触发器了。并且我们也完全可以在应用程序代码中去控制,没必要在Mysql中去写事件代码了。
触发器可以掩盖服务器背后的工作,一个简单的Sql语句背后,因为触发器,可能包含了很多看不见的工作。因此触发器的问题也很难排查,如果某个性能问题和触发器相关,将会很难定位和分析。
触发器可能导致死锁和锁等待。如果触发器失败,那么原来的sql语句也会失败。如果没有意识到这其中是触发器在搞鬼,那么将很难理解服务器抛出的出错误代码是什么意思。
原文链接:https://www.haveyb.com/article/60
MySQL - 触发器相关推荐
- 利用MySQL触发器实现check和assertion
MySQL虽然输入check语句不会报错,但是实际上并没有check的功能.但是MySQL 依然可以利用触发器来实现相应功能. 本文将根据两个例子简要阐述MySQL实现check和assertion的 ...
- MySQL 触发器应用案例
网友问题:对于MySQL主从复制结构中,如何让Slave过滤delete操作. 问题分析:该问题对应的是保全所有的记录,包括delete的记录. 对于MySQL本身的过滤规则粒度是精确到表的粒度. 主 ...
- mysql latid1_【转】mysql触发器的实战经验(触发器执行失败,sql会回滚吗) | 学步园...
1 引言Mysql的触发器和存储过程一样,都是嵌入到mysql的一段程序.触发器是mysql5新增的功能,目前线上凤巢系统.北斗系统以及哥伦布系统使用的数据库均是mysql5.0.45版本,很多程 ...
- mysql利用触发器删除数据库_[数据库]mysql 触发器的创建 修改 删除
[数据库]mysql 触发器的创建 修改 删除 0 2015-12-16 23:00:04 //做一个简单的练习,创建一个简单的触发器 完成添加文章的时候,自动加上时间,默认作者 为 '日记本的回忆' ...
- mysql 触发器学习
mysql 触发器学习 1. 一个简单的例子 1.1. 创建表: create table t(s1 integer); 1.2. 触发器: delimiter | create trigger t_ ...
- mysql 触发器 分行_mysql 触发器
mysql 触发器中有两个insert 语句 第二个inert 要用第一个insert 的结果怎么实现 DELIMITER $$ USE `nightclub`$$ DROP TRIGGER /*!5 ...
- mysql触发器 存储过程_mysql触发器和存储过程
Mysql触发器和存储过程 1 / 9Mysql触发器 1.语法:命名规则 CREATE TRIGGER { BEFORE | AFTER } { INSERT | UPDATE | DELETE } ...
- mysql之触发器详解_学习笔记之MySQL触发器详解
触发器是由事件来触发某个操作,这些事件包括INSERT语句,UPDATE语句和DELETE语句 创建触发器 创建只有一个执行语句的触发器 CREATE TRIGGER 触发器名 BEFORE|AFTE ...
- MySql 触发器同步备份数据表记录
添加记录到新记录表 DELIMITER $$ USE `DB_Test`$$ CREATE/*!50017 DEFINER = 'root'@'%' */TRIGGER `InsertOPM_Alar ...
- mysql触发器 while循环_mysql触发器跳出当前循环方法
mysql触发器跳出当前循环方法 set @num=@UnitLength/3; label: while i set @length=(select SUBSTRING(@unit_sid_fk,1 ...
最新文章
- 皮一皮:一直情绪不稳的原因终于找到了!
- 一个简易实用的web权限管理模块的应用与实现
- sql 定时同步两个数据库
- 攻防世界Reverse第二题insanity
- 14_面向对象API绘图、图中图 (A Plot inside of Another Plot)、设定绘图范围Setting the Plot Range、对数尺度Logarithmic Scale
- Enterprise Library Step By Step系列(一):配置应用程序块——入门篇
- Mybatis官方文档——入门
- 计算机应用 winxp,2017年职称计算机考试模块WindowsXP试题
- c语言20152016真题及答案,2016年计算机二级《C语言》基础练习题及答案(15)
- 这也能发Nature??年度奇葩论文大赏
- poi html转换成word文档,poi将html转换为word文档
- 【滤波器】基于matlab高斯滤波器【含Matlab源码 995期】
- 大觅网Springcloud项目实战开发(持续更新中)
- 子母钟时钟系统工业应用
- JAVA后台生成海报分享图片(简单配置轻松生成)
- AD怎么输入坐标_CAD入门基础小知识(二)捕捉栅格绘制直线amp;使用坐标绘图...
- 英语四级和计算机二级补证,SOS:国家英语四级证书,计算机二级证书如 – 手机爱问...
- unity 游戏存档
- 这篇文章告诉你音频降噪手机软件app有哪些?
- 北京智和信通网络流量监控分析平台
热门文章
- PHP excel文件导入至mysql中!
- Delphi 与 DirectX 之 DelphiX(46): TDIB.DoAntiAlias;
- 2分钟,我把网站性能优化了3倍!
- 基于ABP落地领域驱动设计-01.全景图
- 使用.NET开发的数据库小工具 DbTool
- .Net Conf 2020 之回顾
- 记实现TDengine时序数据库支持 .Net Windows 32位系统踩坑
- c#: 协变和逆变深度解析
- 开始你的api:NetApiStarter
- 使用Ingress来负载分发微服务