概述
前边我们学习了mysql的存储过程和函数。本文来介绍一下mysql触发器的使用。
一、什么是触发器
触发器是指鱼鳔有关的数据库对象,在insert/update/delete之前或之后,触发并执行触发器中编写的sql语句集合。
触发器的这种特性可以协助数据库端确保数据的完整性,日志记录,数据校验等操作。
使用别名OLD或者NEW来引用触发器中发生变化的数据内容,比如:插入数据时记录日志,NEW代表插入数据的内容。MYSQL只支持,行级别触发器。
触发器类型 | NEW和OLD的使用 |
---|---|
insert | new表示新增的数据 |
update | old表示旧的数据,new表示修改后的数据 |
delete | old表示删除的数据 |
二、触发器的书写格式
语法结构:
create TRIGGER trigger_name
-- 触发器执行时机 与 触发器类型
before/after insert/update/delete
-- 触发器对应的表
on table_name
for each row
BEGIN
-- 触发器sql
end;
三、触发器的应用
下面我们做一个触发器,有一张部门表:需要在插入数据的时候记录一条日志,日志内容为插入数据内容。
首先创建一张日志表:
CREATE TABLE `dep_op_log` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`op_type` varchar(10) DEFAULT NULL COMMENT '操作类型',
`op_time` datetime DEFAULT NULL COMMENT '操作时间',
`op_desc` varchar(255) DEFAULT NULL COMMENT '操作内容',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
创建触发器:
create TRIGGER insert_dep_trigger
-- 插入之后
after insert
on department
-- 行级别触发器
for each row
BEGIN
insert into dep_op_log(id,op_type,op_time,op_desc) values (null,'insert',now(),concat('新数据:id=',new.id,'name=',new.department_name));
end;
创建成功后,插入一条部门数据:
INSERT INTO `department` VALUES (null, '产品部');
查看结果:
没问题的。
update/与delete触发器与insert大同小异,update要注意的是,保存日志内容可以选择 OLD和NEW,delete只可以选择OLD。
四、删除和查看触发器
-- 删除触发器
DROP TRIGGER IF EXISTS `insert_dep_trigger`;
--查看触发器 表格内容信息等
SHOW TRIGGERs;
最后
以上就是曾经蜻蜓为你收集整理的Mysql高级——触发器的全部内容,希望文章能够帮你解决Mysql高级——触发器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复