数据库--触发器

触发器是与表有关的数据库对象,指在insert/update/delete之前或之后,触发并执行触发器中定义的SQL集合。

在这里插入图片描述

语法

在这里插入图片描述
eg:
在这里插入图片描述
在这里插入图片描述

CREATE TABLE `user_logs` (
  `id` int NOT NULL AUTO_INCREMENT,
  `operation` varchar(255) not NULL comment '操作类型, insert/update/delete',
	`operation_time` datetime not NULL comment '操作时间',
	`operation_id` int(11) not NULL comment '操作的ID',
  `operation_params` varchar(500) COMMENT '操作参数',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3;

插入数据触发器

-- 插入数据触发器
create trigger tb_user_unsert_trigger
		after insert on t_test for each row
begin

		insert into user_logs(id,operation,operation_time,operation_id,operation_params) VALUES
	  (null,'insert',now(),new.id,concat('插入的数据内容为:id=',new.id,',name=',new.name,',no=',new.no));
end;

-- 查看当前数据库触发器
show triggers;
-- 删除
drop trigger tb_user_unsert_trigger;

--插入数据到t_test表
insert into t_test(id,name,tutor_info_picture,no)
VALUES (5,'小米','图',5);

注意:这里拿新添加的主键id,使用new关键字,获取当前时间使用函数now()

在这里插入图片描述

修改数据触发器

-- 修改数据触发器
create trigger tb_user_update_trigger
		after update on t_test for each row
begin

		insert into user_logs(id,operation,operation_time,operation_id,operation_params) VALUES
	  (null,'update',now(),new.id,concat('更新之前的数据内容为:id=',old.id,',name=',old.name,',no=',old.no,
																			' | 更新之后的数据内容为:id=',new.id,',name=',new.name,',no=',new.no));
end;

update t_test set name = '小小' WHERE id = 4;

在这里插入图片描述
注意:old为更新前的数据,new为更新后的数据,or each row表示每插一行就记录

删除数据触发器

-- 修改数据触发器
create trigger tb_user_delete_trigger
		after delete on t_test for each row
begin

		insert into user_logs(id,operation,operation_time,operation_id,operation_params) VALUES
	  (null,'delete',now(),old.id,concat('删除之前的数据内容为:id=',old.id,',name=',old.name,',no=',old.no));
end;

show triggers;

delete from t_test WHERE id = 2;

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值