加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_池州站长网 (https://www.0566zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL触发器详解

发布时间:2022-12-13 10:46:47 所属栏目:MySql教程 来源:
导读:  今天继续给大家介绍MySQL相关知识,本文主要内容是MySQL触发器相关知识。

  一、触发器简介

  触发器是一种特殊的存储过程,在定义触发器时会定义触发器的触发条件,使得触发器在满足触发条件时自动
  今天继续给大家介绍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命令mysql触发器,则不需要加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 【触发器名】;
 

(编辑:我爱制作网_池州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!