我是靠谱客的博主 飞快芝麻,最近开发中收集的这篇文章主要介绍MySQL数据库——触发器(六)一、概述二、创建触发器三、查看触发器四、删除触发器五、使用触发器六、对触发器的进一步说明,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
目录
一、概述
二、创建触发器
三、查看触发器
四、删除触发器
五、使用触发器
1.INSERT触发器
2.DELETE触发器
3.UPDATE触发器
4.包含多条执行语句【BEGIN...END】
六、对触发器的进一步说明
一、概述
触发器是一个被关联到一个表的数据库对象,当该表的特定事件发生时,它才会被触发
触发器与表的联系十分密切,用于保护数据库中数据的完整性和多个表之间数据的一致性
如:
- 增加一个用户信息到数据库中的基本信息表时,检查其电话号码格式是否正确
- 当用户订购一个产品时,要从产品库存量减去订购的数量
二、创建触发器
格式:
CREATE TRIGGER 触发器名 触发时间 触发事件 ON 表名 FOR EACH ROW 触发器动作主体
- 触发时间:BEFORE和AFTER
- BEFORE:触发器是在激活它的语句之前触发
- AFTER:触发器是在激活它的语句之后触发
- 触发事件:INSERT、UPDATE和DELETE
- INSERT:向表中插入新行时激活触发器
- UPDATE:更改表中某一行时激活触发器
- DELETE:从表中删除某一行时激活触发器
- 表名:一个表中不能同时有两个BEFORE UPDATE触发器,可以有一个BEFORE UPDATE 和 BEFORE INSERT触发器 或者 BEFORE UPDATE 和 AFTER UPDATE触发器
- FOR EACH ROW:用来指定受触发事件影响的每一行都要激活触发器的动作
- 触发器动作主体:包含触发器被激活时要执行的SQL语句【多个语句可用BEGIN...END复合语句结构---详情请看第五节-使用触发器】
- 注意:
- 每个表每个事件只允许一个触发器
- 每个表最多支持6个触发器【INSERT、UPDATE、DELETE的之前与之后】
Example:
- Explanation:
- 每次向student 表中插入一行数据后将student变量[-变量名自定义-]设置为“add new student”
三、查看触发器
格式:
SHOW TRIGGERS [FROM 表名] [G];
Example:
- Trigger:触发器名
- Event:触发事件
- Table:表名
- Statement:触发动作
- Timing:触发时间
- Created:触发器创建时间
四、删除触发器
格式:
DROP TRIGGER [IF EXISTS] 触发器名;
Example:
注意:
- 删除一个表的同时会自动删除该表上的触发器
- 触发器不能更新或覆盖,如果要修改触发器,必须先删除后再重新创建
五、使用触发器
1.INSERT触发器
格式:
CREATE TRIGGER 触发器名 BEFORE/AFTER INSERT ON 表名 FOR EACH ROW 触发器动作主体
- INSERT触发器代码内可引用一个名为NEW的虚拟表来访问被插入的行
- 在BEFORE INSERT触发器中,NEW中的值也可以被更新,即允许更改被插入的值
- 对于约束为AUTO_INCREMENT列,NEW在INSERT执行之前包含的是0,插入之后包含新的自动生成值
Example:
1.简单了解
2.关于名为NEW的虚拟表
2.DELETE触发器
格式:
CREATE TRIGGER 触发器名 BEFORE/AFTER DELETE ON 表名 FOR EACH ROW 触发器动作主体
- DELETE触发器代码内可引用一个名为OLD的虚拟表来访问被删除的行
- OLD的值全部是只读的,不能被更新
Example:
1.简单了解
2.关于名为OLD的虚拟表
3.UPDATE触发器
格式:
CREATE TRIGGER 触发器名 BEFORE/AFTER UPDATE ON 表名 FOR EACH ROW 触发器动作主体
- UPDATE触发器代码内可引用一个名为OLD的虚拟表来访问UPDATE语句执行前的值,也可以引用一个名为NEW的虚拟表来访问新更新的值
- 在BEFORE UPDATE触发器中,NEW中的值可能也被更新,即允许更改将要用于UPDATE语句中的值
- OLD的值全部是只读的,不能被更新
- 当触发器涉及对表自身的更新操作时,只能使用BEFORE UPDATE触发器,而AFTER UPDATE触发器将不被允许
Example:
4.包含多条执行语句【BEGIN...END】
分号一般作为SQL语句的结束符号,但在触发器中,要执行多条语句时就很不方便,所以可以利用关键字DELIMITER来实现多条SQL语句的执行
结构如下:
- DELIMITER $$
- $$ DELIMITER;
- 如有无法退出的情况发生,输入$$+按下回车键即可
六、对触发器的进一步说明
- 目前MySql版本所支持的触发器还比较初级
- 创建触发器可能需要特殊的安全访问权限,但触发器的执行是自动的
- 应该多用触发器保证数据的一致性,完整性和正确性
- 创建跟踪——可使用触发器把更改之前和更改之后的状态记录到另一张表中
最后
以上就是飞快芝麻为你收集整理的MySQL数据库——触发器(六)一、概述二、创建触发器三、查看触发器四、删除触发器五、使用触发器六、对触发器的进一步说明的全部内容,希望文章能够帮你解决MySQL数据库——触发器(六)一、概述二、创建触发器三、查看触发器四、删除触发器五、使用触发器六、对触发器的进一步说明所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复