mysql 触发器 trigger的学习记录

本文深入讲解MySQL触发器的原理及应用,包括触发器的语法、类型及其如何在数据操作事件后执行相关操作。通过示例展示如何在用户插入操作后记录日志,详细解释NEW与OLD变量的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 前面写了 procedure,function,还有一个trigger,这里开始记录

2 trigger能干什么:

类似于,java操作,当执行了某个操作了,消息通知,程序方式触发执行另外一个关联的操作

那在mysql中,也有同样的操作行为,这里定义的就是触发器

2 它的语法:

CREATE TRIGGER 触发器名 BEFORE|AFTER 触发事件
ON 表名 FOR EACH ROW
BEGIN
    执行语句列表
END

3 有个触发器的概念,是由触发时机(before/after)和触发事件(insert/update/delete)组合,出现了6种触发器类型

4 示例,在插入user时,写一条日志记录


CREATE TABLE `logs` (
  `Id` INT(11) NOT NULL AUTO_INCREMENT,
  `log` VARCHAR(255) DEFAULT NULL COMMENT '日志说明',
  PRIMARY KEY (`Id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COMMENT='日志表';

-- 创建触发器

DELIMITER $
CREATE TRIGGER user_log AFTER INSERT ON users FOR EACH ROW
BEGIN
DECLARE s1 VARCHAR(40)CHARACTER SET utf8;
DECLARE s2 VARCHAR(20) CHARACTER SET utf8; -- 后面发现中文字符编码出现乱码,这里设置字符集
SET s2 = " is created";
SET s1 = CONCAT(New.username,s2);     -- 这里注意使用到了New 用来获取当前插入的user信息字段值
INSERT INTO LOGS(LOG) VALUES(s1);
END $
DELIMITER ;

 

mysql触发器 的过渡变量:(NEW | OLD . column_name)

NEW . column_name"或者"OLD . column_name".

对于INSERT语句,只有NEW是合法的;

对于DELETE语句,只有OLD才合法;

而UPDATE语句可以在和NEW以及OLD同时使用;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值