mysql的timestamp字段自动更新问题

kidbei 发布于 2013/05/14 23:18
阅读 1K+
收藏 0

service中:

Comment comment = Comment.dao.getCommentById(commentId);
int disagree_count = comment.getInt("disagree_count");
comment.set("disagree_count", disagree_count-1);
return Comment.dao.update(comment);
dao中:
public Comment getCommentById(String id){
		return findById(id);
	}
comment中有一个timestamp字段,我明明只更新了disagree_count字段,但是每次更新后时间就变成当前时间了,这是何解?

@jfinal

加载中
1
我已经报警了
我已经报警了

当使用MYSQL,建表使用timestamp类型是,没有默认default CURRENT_TIME

就会导致创建的timestamp实际上是timestamp default CURRNET_TIME EXTRA ON UPDATE CURRENT_TIME

你需要更改表的ddl,给timestamp加上default CURRENT_TIME

kidbei
kidbei
确实是这样,谢谢前辈
1
lxbzmy
lxbzmy
应该是mysql中指定了 timestamp的自动更新。
kidbei
kidbei
确实是这样,谢谢前辈
0
JFinal
JFinal
JFinal Model中定义的 dao 对象只能用于查询,不能承载对象,这个在手册上用红色的字体标出过,Comment.dao.update(comment); 改为 comment.update();
kidbei
kidbei
我勒个去,还真是他们说的那个原因,确实建表的时候有这个选项........改了就好了
kidbei
kidbei
我没有用于数据承载啊,Comment.do.update()调用的是model类里面的public boolean update(Comment comment){ return comment.update(); }这个方法。。。
0
我已经报警了
我已经报警了
你的ddl是这样的
create table test (
id int not null,
a timestamp,
b int
)
使用下面的ddl就可以避免timestamp自动更新.
create table test1 (
id int not null,
a timestamp default CURRENT_TIMESTAMP,
b int
)
)
说起来这也是timestamp的一个特性,支持自动更新.在神马上次登录时间这样的字段里面可以使用这个特性.
苏生不惑
苏生不惑
我之前也在奇怪呢,原来timestamp还有这个设置,谢谢啦
0
kidbei
kidbei
LS几位都是经验丰富啊,我都没听过有这么个设置,谢谢各位了,问题已解决
0
杨同学
杨同学
好烦这样的标题
kidbei
kidbei
已改标题,但是你这评论我看着也很烦。
0
喜之郎
喜之郎
难道不应该这样吗?这就是 timestamp的作用啊。
kidbei
kidbei
不好意思,没多少经验,头一次见识到timestamp还有这个作用。谢谢哈
返回顶部
顶部