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;
idstu_idstu_namef1f2
1(NULL)(NULL)00
210(NULL)00
3(NULL)(NULL)00
410(NULL)00

修改数据

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;
idstu_idstu_namef1f2
11(NULL)1(NULL)
21(NULL)110
3(NULL)1(NULL)(NULL)
41011010

通过这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的值就是新的值

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值