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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值