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同时使用;
本文地址:https://blog.csdn.net/lsx6766/article/details/107157133
如对本文有疑问, 点击进行留言回复!!
解决idea中出现“illegal character U+200B” 问题
荐 为什么加了@Transactional注解,事务没有回滚?
Attribute ‘sklearn.linear_model._logistic.LogisticRegression.multi_class‘ must be explicitly set to
Java/Python实现 LeetCode剑指Offer 14-I.剪绳子(动态规划)
网友评论