MYSQL触发器

Posted 去糖不加冰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL触发器相关的知识,希望对你有一定的参考价值。

1.触发器定义

触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。
触发程序的优点如下:
• 触发程序的执行是自动的,当对触发程序相关表的数据做出相应的修改后立即执行。
• 触发程序可以通过数据库中相关的表层叠修改另外的表。
• 触发程序可以实施比 FOREIGN KEY 约束、CHECK 约束更为复杂的检查和操作。

触发器是一种与表操作( INSERT、UPDATE、DELETE)有关的数据库对象。触发器定义了一系列操作,这一系列操作称为触发程序。当触发器所在表上出现INSERT、UPDATE以及DETETE操作时,将激活触发器,即表的操作事件触发表上的触发程序的执行。

2.触发器四要素

(1).监视地点(table)
触发地点一般指监视的表,
(2).监视事件(insert/update/delete)
监视事件对监视的表是那种操作触发
(3).触发时间(after/before)
触发时间是监视表动作前还是后
(4).触发事件(insert/update/delete)
对另一张表进行操作

3.触发器分类

mysql触发器有三种 INSERT触发器、UPDATE触发器、DELETE触发器

(1).INSERT触发器
在 INSERT 触发器代码内,可引用一个名为 NEW(不区分大小写)的虚拟表来访问被插入的行。
• 在 BEFORE INSERT 触发器中,NEW 中的值也可以被更新,即允许更改被插入的值(只要具有对应的操 作权限)。
• 对于 AUTO_INCREMENT 列,NEW 在 INSERT 执行之前包含的值是 0,在 INSERT 执行之后将包含新 的自动生成值。
(2).UPDATE触发器
• 在 UPDATE 触发器代码内,可引用一个名为 NEW(不区分大小写)的虚拟表来访问更新的值。
• 在 UPDATE 触发器代码内,可引用一个名为 OLD(不区分大小写)的虚拟表来访问 UPDATE 语句执行前的 值。
• 在 BEFORE UPDATE 触发器中,NEW 中的值可能也被更新,即允许更改将要用于 UPDATE 语句中的值 (只要具有对应的操作权限)。
• OLD 中的值全部是只读的,不能被更新。
注意:当触发器设计对触发表自身的更新操作时,只能使用 BEFORE 类型的触发器,AFTER 类型的触发器将 不被允许。
(3).DELETE触发器
• 在 DELETE 触发器代码内,可以引用一个名为 OLD(不区分大小写)的虚拟表来访问被删除的行。
• OLD 中的值全部是只读的,不能被更新。

以上是关于MYSQL触发器的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL触发器

MYSQL触发器

Mysql触发器

MySQL触发器

MySQL学习(十六)

MySQL触发器