最近在做一些小东西的时候偶然要用到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
欢迎补充.....
这篇博客介绍了如何在MySQL中使用触发器,确保只有当特定字段(如'score')更新时,时间戳字段('createDate')才会更新。通过创建BEFORE UPDATE触发器,检查NEW和OLD记录的'score'字段变化,实现了这一需求。
1597

被折叠的 条评论
为什么被折叠?



