欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mysql 触发器 trigger的学习记录

程序员文章站 2022-04-19 14:08:24
1 前面写了 procedure,function,还有一个trigger,这里开始记录2 trigger能干什么:类似于,java操作,当执行了某个操作了,消息通知,程序方式触发执行另外一个关联的操作那在mysql中,也有同样的操作行为,这里定义的就是触发器2 它的语法:CREATE TRIGGER 触发器名 BEFORE|AFTER 触发事件ON 表名 FOR EACH ROWBEGIN 执行语句列表END3 有个触发器的概念,是由触发时机(before/af...

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同时使用;

 

mysql 触发器 trigger的学习记录

本文地址:https://blog.csdn.net/lsx6766/article/details/107157133