一、概述

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语句也会失败。如果没有意识到这其中是触发器在搞鬼,那么将很难理解服务器抛出的出错误代码是什么意思。

MySQL 触发器篇相关推荐

  1. 超详细图解!【MySQL进阶篇】存储过程,视图,索引,函数,触发器

    超详细图解![MySQL进阶篇]存储过程,视图,索引,函数,触发器 1.1 下载Linux 安装包 1.2 安装MySQL 1.3 启动 MySQL 服务 1.4 登录MySQL 2\. 索引 2.1 ...

  2. 【MySQL | 进阶篇】05、MySQL 视图、触发器讲解

    目录 一.视图 1.1 介绍 1.2 语法 1.2.1 演示示例 1.3 检查选项 1.3.1 CASCADED 级联 1.3.2 LOCAL 本地 1.3.3 示例演示 1.4 视图的更新 1.4. ...

  3. 一篇很棒的 MySQL 触发器学习教程

    一.触发器概念 触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动 ...

  4. MySQL触发器介绍

    前言: 在学习 MySQL 的过程中,可能你了解过触发器的概念,不清楚各位是否有详细的去学习过触发器,最近看了几篇关于触发器的文档,分享下 MySQL 触发器相关知识. 1.触发器简介 触发器即 tr ...

  5. [数据库] Navicat for MySQL触发器更新和插入操作

    一.触发器概念 触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动 ...

  6. 关于mysql触发器和存储过程的理解

    内容源自:一篇很棒的 MySQL 触发器学习教程 一.触发器概念 触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊 ...

  7. mysql触发器的简单入门(二)

    2019独角兽企业重金招聘Python工程师标准>>> 第一篇链接 https://my.oschina.net/aijiaoer0624/blog/1529475 先贴上代码: C ...

  8. Mysql基础篇(1)—— 基础概念、DML基本语法和表连接

    前言 Mysql基础篇相关的内容是看了康师傅的视频做的笔记吧 数据库相关概念 DB: 数据库(Database) ​ 存储数据的仓库,本质是一个文件系统.它保存了一系列有组织的数据. DBMS:数据库 ...

  9. 【无标mysql触发器trigger实例详解

    文章来源: 学习通http://www.bdgxy.com/ 普学网http://www.boxinghulanban.cn/ 智学网http://www.jaxp.net/ 目录 什么是触发器 创建 ...

最新文章

  1. 【CSS】【14】CSS中使用背景图像
  2. 第四章-分布式数据库HBase
  3. 产业互联网时代,猪是如何上天的
  4. rabbitmq队列php应用,RabbitMQ工作队列应用
  5. 2021 CSP-S 游记
  6. 修改窗口图标 AfxRegisterWndClass()
  7. 华硕首款平板电脑周五开售
  8. 【转】刨根究底字符编码之七——ANSI编码与代码页
  9. php读取pdf文件乱码,使用php读取pdf文件
  10. 软件架构-里氏替换原则
  11. mysql more和tail_cat、less、more、head、tail这几个命令区别
  12. eds图怎么绘制_EDS元素分析-eds图像
  13. oracle替换指定字符串字符_实例:替换方框内字符串内容
  14. 121、华为交换机配置手册
  15. Unity使用中文包
  16. 经络是怎样分类命名的?十二经脉的分布和循行
  17. 【程序人生】《你相信上帝的存在吗?》
  18. python 拆分excel工作表_使用python拆分excel单元格方法
  19. Firefox修改快捷键插件SakaKey使用教程
  20. Java基础练习--猜数字游戏

热门文章

  1. 【小程序】手动实现switch开关中带文字效果(开关左右文字相同/不同都可以)
  2. 两个经典的函数递归问题:青蛙跳台和贝诺塔
  3. Oracle-----临时会话与临时事务的区别
  4. 【NLP】地理信息系统原理与方法(第4版) 思维导图
  5. Conflict with dependency 'com.android.support:support-annotations'解决方案
  6. CF1555C 题解
  7. pccad 2018 v2.2 部署在horizon桌面上
  8. 形容计算机科学与技术的句子,形容技术很专业的句子
  9. 小波阈值滤波和VMD分解的对比输入一段语音信号,加入不同信噪比的噪声,单独使用小波阈滤波
  10. java里jlabel_JAVA中jlabel怎么用