第七课:MySQL 触发器

一、触发器

触发器是一个被指定关联到一个表的数据库对象。触发器用于保障数据库中数据的完整性,以及多个表之间数的一致性。

触发器是MySQL响应insert、update和delete语句而自动执行的一条MySQL语句(或位于begin和end语句之间的一组MySQL语句)。

陈双义博客

二、创建触发器

基本语法结构:

create

trigger trigger_name trigger_time trigger_event

on tb_name for each row trigger_body;

trigger_name:触发器名称,触发器在当前数据库中必须具备唯一的名称。如需在某个特殊数据库中创建,需要名称前面加上数据库的名称

trigger_time:触发器被触发的时间,选项有before和after,用于表示触发器是在激活语句之前或之后触发

trigger_event:触发事件。指定激活触发器的语句类型,可以是以下值之一:

insert:将新行插入表示激活触发器

update:更改表中某一行数据时激活触发器

delete;从表中删除某一行时激活触发器

tb_name:与触发器相关联的表名,必须引用永久性表。同一个表不能拥有两个具有相同触发时刻和事件的触发器

for each row:指定对于受触发器事件影响的每一行都要激活触发器的动作

trigger_body:触发器动作的主体。包含触发器激活时将要执行的MySQL语句。若要执行多个语句,使用begin...end复合语句结构

触发器创建中,每个表每个事件每次只允许一个触发器。每个表最多支持6个触发器。单一触发器不能与多个事件或多个表相关联

查看数据库中已存在的触发器:

show triggers [{from | in} db_name];

三、删除触发器

基本语法格式:

drop trigger [if exists] [schema_name,]trigger_name;

schema_name:可选项,指定触发器所在的数据库的名称

drop trigger语句需要super权限

四、使用触发器

MySQL支持的触发器有三种:insert触发器、delete触发器和update触发器

1、insert触发器

在insert触发器代码内可以引用一个new的虚拟表来访问被插入的行

在before insert触发器中,new中的值也可以被更新

对于auto_increment列,new在insert执行之前包含的是0值,在insert执行后将包含新的自动生成值

2、delete触发器

在delete触发器代码内可以引用一个名为old的虚拟表来访问被删除的行

old中的值全部是只读,不能被更新

3、update触发器

在update触发器代码内可以引用一个名为old的虚拟表来访问以前的值,也可以引用一个new的虚拟表来访问新更新的值

在before update触发器中,new中的值也可以被更新,只要具有对应的操作权限

old中的值全部是只读,不能被更新

当触发器涉及对表自身的更新操作时,只能使用before update触发器,而after update触发器不被允许

4、触发器执行过程中,MySQL处理错误的方法:

如果before触发程序失败,则将不执行相应行上的操作

仅当before触发程序和行操作已被成功执行,才会执行after触发程序(若有)

如果在before或after触发程序的执行过程中出现错误,将导致调用触发程序的整个语句的失败

五、对触发器的进一步说明

创建触发器可能需要特殊的安全访问权限,触发器的执行是自动地

多用触发器来保证数据的一致性、完整性和正确性

触发器中的一种模式——创建审计跟踪,可以使用触发器把表的更改状态以及之前的状态记录到另一张数据表中

打赏 支付宝打赏 微信打赏
本文标题:第七课:MySQL 触发器
本文链接:https://chenshuangyi.com/post/559.html
作者授权:除特别说明外,本文由 陈双义 原创编译并授权 陈双义博客 刊载发布。
版权声明:本文使用「署名-非商业性使用-相同方式共享」创作共享协议,转载或使用请遵守署名协议。

为您推荐

干货 | 软件性能测试基本测试概念

干货 | 软件性能测试基本测试概念

一、性能测试的目的1、 评估当前系统2、 寻找瓶颈3、 预测未来性能二、性能测试的前提:接...

  第十二课:MySQL 数据库的应用编程

第十二课:MySQL 数据库的应用编程

一、使用PHP进行MySQL数据库应用编程1、建立与MySQL数据库服务器的连接1.1、使用函数mysql_connec...

2019-03-21 标签:MySQL数据库软件测试
第十一课:MySQL 数据库备份与恢复

第十一课:MySQL 数据库备份与恢复

一、MySQL数据库备份与恢复1、使用SQL语句备份和恢复表数据1.1、select into...outfile语句导...

2019-03-21 标签:MySQL数据库软件测试
第十课:MySQL 访问控制与安全管理

第十课:MySQL 访问控制与安全管理

一、用户账户管理1、创建账户基本语法结构:create user user_specification[,us...

2019-03-20 标签:MySQL数据库软件测试
第九课:MySQL 存储过程和存储函数

第九课:MySQL 存储过程和存储函数

一、存储过程存储过程是一组为了完成某特定功能的SQL语句集。一个存储过程是一个可编程的函数,同时可以看做是在数据库编程中...

2019-03-18 标签:MySQL数据库软件测试
第八课:MySQL 事件

第八课:MySQL 事件

一、事件事件和触发器相似,都是在某些事情发生的时候启动,事件也叫作临时触发器事件基于特定时间周期触发来执行某些任务,而触...

2019-03-05 标签:MySQL数据库软件测试
第六课:MySQL 视图

第六课:MySQL 视图

一、视图视图是从一个或多个表或者视图中导出的表,也包含一系列带有名称的数据列和若干条数据行视图不同于数据库真实存在的表:...

2019-03-05 标签:MySQL数据库软件测试
第五课:MySQL 索引

第五课:MySQL 索引

一、索引数据表查询操作主要的两种搜索方式:一种全表扫描、检索,另一种利用数据表上建立的索引进行扫描MySQL主要的几种索...

2019-03-05 标签:MySQL数据库软件测试

发表评论

百度一下
百度搜索
百度广告
站点信息
  • 文章总数:735
  • 页面总数:9
  • 分类总数:19
  • 标签总数:1179
  • 评论总数:149
  • 浏览总数:320169

当前非电脑浏览器正常宽度,请使用移动设备访问本站!