mysql创建一个改变固定字段才更新时间的时间戳timestamp

这篇博客介绍了如何在MySQL中使用触发器,确保只有当特定字段(如'score')更新时,时间戳字段('createDate')才会更新。通过创建BEFORE UPDATE触发器,检查NEW和OLD记录的'score'字段变化,实现了这一需求。

最近在做一些小东西的时候偶然要用到mysql timestamp的这个时间戳来满足某个特定字段更新时才更新时间戳的需求


简单地写一些



例如表a中有num,age,name,score,以及createDate 这五个字段

crateDate是时间戳类型

默认为TIMESTAMP DEFAULT CURRENT_TIMESTAMP


现在要求插入记录时更新时间戳,并且当改变score时更新时间戳,改变其他字段时不会更新时间戳




关于时间戳的具体解释已经默认值的设置请看这篇文章http://www.2cto.com/database/201205/131759.html

然后写个触发器吧,目前只想到这个办法

delimiter//

CREATE  TRIGGER update_time BEFORE UPDATE ON a
FOR EACH ROW

 begin
If new.score<> old.score then set new.createDate= current_timestamp; 
end if;

end//


对于new和old 请看http://www.2cto.com/database/201301/186392.html

好像-new 字段不能用在before update 的触发器

会报以下错误

Updating of NEW row is not allowed in after trigger



欢迎补充.....


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值