MySql触发器new的默认值

DROP TABLE `dasi_util`.`student`
CREATE TABLE `dasi_util`.`student`(
 `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
 `stu_id` VARCHAR(32) COMMENT '学生id',
 `stu_name` VARCHAR(32) COMMENT '学生姓名',
 `f1` VARCHAR(32) COMMENT '结果1',
 `f2` VARCHAR(32) COMMENT '结果2',
 PRIMARY KEY (`id`)
);

DELIMITER $$ 
DROP TRIGGER IF EXISTS `dasi_util`.`update_student`$$ 
CREATE TRIGGER `dasi_util`.`update_student` 
BEFORE UPDATE ON `dasi_util`.`student`
FOR EACH ROW 
BEGIN
   SET new.`f1` = new.`stu_id`;
   SET new.`f2` = old.`stu_id`;
END $$ 
DELIMITER ; 

插入数据

INSERT `student`(f1,f2) VALUES(0,0);
INSERT `student`(stu_id,f1,f2) VALUES(10,0,0);
INSERT `student`(f1,f2) VALUES(0,0);
INSERT `student`(stu_id,f1,f2) VALUES(10,0,0);
SELECT * FROM student;
id stu_id stu_name f1 f2
1 (NULL) (NULL) 0 0
2 10 (NULL) 0 0
3 (NULL) (NULL) 0 0
4 10 (NULL) 0 0

修改数据

UPDATE `student` SET `stu_id`='1' WHERE id=1;
UPDATE `student` SET `stu_id`='1' WHERE id=2;
UPDATE `student` SET `stu_name`='1' WHERE id=3;
UPDATE `student` SET `stu_name`='1' WHERE id=4;
SELECT * FROM student;
id stu_id stu_name f1 f2
1 1 (NULL) 1 (NULL)
2 1 (NULL) 1 10
3 (NULL) 1 (NULL) (NULL)
4 10 1 10 10

通过这1、2两条数据推论出:
修改了stu_id,new.stu_id的值就是stu_id修改后的值;old.stu_id的值是原有的值(NULL也不例外)

通过这3、4两条数据推论出:
修改了stu_name,new.stu_id的值就是old.stu_id的值;old.stu_id的值是原有的值(NULL也不例外)

小结

new的值在没有修改的时候是和old的值一样的(含NULL),但当修改了之后,new的值就是新的值

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,129评论 18 399
  • 一. Java基础部分.................................................
    wy_sure阅读 9,291评论 0 11
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,084评论 19 139
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,879评论 0 9
  • 我现在在努力获得独立的资本。虽然他不能使我快乐,但无需让自己陷入抱怨的泥潭里.这是很可怕的,不值得把一分一秒的时间...
    泞泞阅读 2,405评论 0 0

友情链接更多精彩内容