今天继续给大家介绍MySQL相关知识,本文主要内容是MySQL触发器相关知识。

一、触发器简介

触发器是一种特殊的存储过程,在定义触发器时会定义触发器的触发条件,使得触发器在满足触发条件时自动执行而不需要认为调用。尽管触发器的原理很简单,但是在MySQL中引入并使用触发器,可以实现很多实用的效果,并满足一些特定业务环境的需要。
触发器的作用主要有以下几点:
1、增强数据库的安全性。
可以实现对用户操作数据库的限制,比如不允许用户下班时间修改数据,不允许用户对某些数据更改超过一定的幅度和范围等等。
2、实现数据库操作的审计。
利用MySQL触发器,可以跟踪用户对数据库的操作,把用户执行的一些操作自动写入审计库。
3、定义数据表的一些复杂规则。
触发器可以实现非标准的数据完整性检查和约束,因此,触发器可以实现比规则更加复杂的限制。
4、实现复杂的级联操作。
尽管我们利用外键,可以实现相关的级联操作,但是,利用触发器,我们可以实现更加复杂的级联操作。
5、自动计算数值。
利用触发器,可以监控数据库中某些敏感值,例如,如果当前公司账目上可用资金少于100万元,则立即给公司老板告警等等。

二、触发器定义

触发器定义语法如下:

create trigger 【触发器名称】 【触发时机(before|after)】 【触发动作(delete|update|insert)】 on 【数据库表名】 for each row
begin
【触发后执行事件】
end

在上述语法中,触发器名称可以自行定义,触发时机只可以选择bofore和after,before在触发动作之前执行,after在触发动作之后执行。触发后如果只有简单的一行SQL命令,则不需要加begin和end关键字,但是如果有多行命令,则需要添加相应的关键字。
此外,与MySQL存储过程类似,MySQL触发器也需要使用delimiter来修改MySQL数据库的默认分号结束符。

三、触发器示例

下面,我来创建一个简单的触发器,作用是当我们向student表中添加学生后,自动向logs表中记录刚才的添加操作,下面我们实际创建该触发器,并观察其效果。
创建触发器SQL命令如下:

create trigger student_add after insert on student for each row
insert into logs select now(*),concat(id,'-',name) from student where id=(select max(id) from student );//

然后,我们向student表中插入学生数据,并观察效果如下:

显然,我们的触发器当向student表中添加数据时生效,并且达到了我们与其的效果。

四、触发器查看与删除

最后,我们来简单将以下触发器的查看和删除相关命令。
1、查看指定触发器
执行命令:

show create trigger 【触发器名】\G

可以查看指定的触发器。
上述命令执行结果如下:

2、查看所有触发器
执行命令:

show triggers\G

可以查看所有的触发器,执行结果如下:

3、删除触发器
执行命令

drop trigger 【触发器名】;

可以删除指定的触发器。执行效果如下:

原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

MySQL触发器详解相关推荐

  1. mysql之触发器详解_学习笔记之MySQL触发器详解

    触发器是由事件来触发某个操作,这些事件包括INSERT语句,UPDATE语句和DELETE语句 创建触发器 创建只有一个执行语句的触发器 CREATE TRIGGER 触发器名 BEFORE|AFTE ...

  2. MySQL进阶--数据库的触发器详解

    触发器详解 触发器(trigger)也称为触发程序,是MySQL提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件 ...

  3. MySQL Explain详解,分析语句为何运行慢

    MySQL Explain详解 在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语 ...

  4. navicat创建MySql定时任务详解

    目录 navicat创建MySql 定时任务详解 一.开起定时任务 二.通过navicat创建定时任务 三.关闭.启动.别名.移动.删除event 四.查询Event信息 navicat创建MySql ...

  5. MySQL数据库,从入门到精通:第十四篇——MySQL视图详解

    MySQL数据库,从入门到精通:第十四篇--MySQL视图详解 第 14 篇_视图 1. 常见的数据库对象 2. 视图概述 2. 1 为什么使用视图? 2. 2 视图的理解 3. 创建视图 3. 1 ...

  6. MySQL Explain详解,explain查询结果每列含义详细解释

    转自:https://www.cnblogs.com/xuanzhi201111/p/4175635.html MySQL Explain详解 在日常工作中,我们会有时会开慢查询去记录一些执行时间比较 ...

  7. MySQL数据库,从入门到精通:第十二篇——MySQL数据类型详解

    MySQL数据库,从入门到精通:第十二篇--MySQL数据类型详解 第 12 章_MySQL数据类型精讲 1. MySQL中的数据类型 2. 整数类型 2. 1 类型介绍 2. 2 可选属性 2. 2 ...

  8. 十六、MySQL 视图详解

    文章目录 一.常见的数据库对象 二.视图概述 2.1 为什么要使用视图? 2.2 视图的理解 2.3 视图的作用 三.视图常用操作 3.1 查看创建视图的权限 3.2 创建视图 3.3 查看视图 3. ...

  9. pandas读写MySQL数据库详解及实战

    pandas读写MySQL数据库详解及实战 SQLAlchemy是Python中最有名的ORM工具. 关于ORM: 全称Object Relational Mapping(对象关系映射). 特点是操纵 ...

最新文章

  1. 搭建Ubuntu18.04+Anaconda3.x+Pycharm+SimpleITK(一)
  2. 学习C++之父的最新姐妹作笔记2
  3. Paper:2017年的Google机器翻译团队《Transformer:Attention Is All You Need》翻译并解读
  4. gorm框架:user role用户角色一对一关联Model编写
  5. 《编程原本 》一3.3 程序变换
  6. LVS三种模式的区别及负载均衡算法
  7. LeetCode 1570. 两个稀疏向量的点积(哈希)
  8. C++ 运算符重载规则
  9. 【Python3】待解决的疑问
  10. 下列选项不属于有机物的是_初级会计实务:属于工业企业营业收入的有哪些?...
  11. HTML5之横向二三级,纵向三级导航栏
  12. <EDEM 基础案例 01>SAG Mill
  13. §6.5 分离性公理与子空间,(有限)积空间和商空间
  14. C语言的奇技淫巧(1-50)
  15. php linux重新写路由器,通过php脚本重启路由器
  16. 林肯公园(LINKIN PARK)上海演唱会观众座位表(转帖)
  17. 【每日新闻】雷军:5G+AIoT是下一代的超级互联网
  18. 如何查看谷歌账户的实际消费金额和扣款金额是否一致?
  19. matlab bar 填充花纹,转:使用matlab绘画柱状图,且使用不同的图案填充
  20. 数据共享之相互排斥量mutex

热门文章

  1. 恋爱降级年代,品牌怎样做“520”借势营销?
  2. Shell-遍历数组并选择
  3. 20180523模拟赛T1——前缀?
  4. 永中科技破产与中方股东的违约责任
  5. 形容口蜜腹剑图片_形容人心的句子 口蜜腹剑不仅仅是几个成语
  6. 从MDF文件恢复SqlServer2000数据库
  7. 第一讲javascript入门(js的组成、事件类型、嵌入方式、注释方式、输出方式、变量类型 、变量命名规则、字符串转义符、算术运算符、数据类型转换、null和undefined的区别)
  8. 非活动应用程序不定时进入睡眠,定时器失效,App Nap
  9. “大厂的人一毕业,讲师就多了起来”——但培训行业,早就卷起来了
  10. 游戏数据分析平台 Playcore 新功能一览