我是靠谱客的博主 曾经蜻蜓,最近开发中收集的这篇文章主要介绍Mysql高级——触发器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前边我们学习了mysql的存储过程和函数。本文来介绍一下mysql触发器的使用。

一、什么是触发器

触发器是指鱼鳔有关的数据库对象,在insert/update/delete之前或之后,触发并执行触发器中编写的sql语句集合。
触发器的这种特性可以协助数据库端确保数据的完整性,日志记录,数据校验等操作。
使用别名OLD或者NEW来引用触发器中发生变化的数据内容,比如:插入数据时记录日志,NEW代表插入数据的内容。MYSQL只支持,行级别触发器。

触发器类型NEW和OLD的使用
insertnew表示新增的数据
updateold表示旧的数据,new表示修改后的数据
deleteold表示删除的数据

二、触发器的书写格式

语法结构:

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高级——触发器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部