datetime

MYSQL 中的datetime类型,在设计表时允许default null,但有时候需要建索引和其他的原因,需要改成 not null,这个时候就需要注意.

1. 刚开始,列UPDATE_TIME datetime default null,

如果没有为列设置值,该列为null,

2.在表中UPDATE_TIME 列已有数据为null的时候,需要为列 UPDATE_TIME 修改成 not null

直接运行 alter table tableName modify UPDATE_TIME datetime not null.

这时候,原先为null的列,这时将会改变成'0000-00-00 00:00:00',这个时候应用程序读取值的时候会报错的。

解决办法:update tableName set UPDATE_TIME = current_timestamp() where UPDATE_TIME is null;

有人会怀疑这是不是太暴力了,不管三七二十一就将数据改成当前时间。其实仔细想想,对于原先值为null的,它本身就无什么特别意义。我们将它update成当前时间,本身也没有什么特别影响。

这时候,如果在插入数据的时候仍没有指定UPDATE_TIME 列的值的话,那么保存到数据库中将会默认的为'0000-00-00 00:00:00'.

如果需要指定默认值,需要将UPDATE_TIME 列将datetime类型改成timestamp类型,并表alter table tableName UPDATE_TIME  default current_timestamp;

posted @ 2011-09-08 14:10  雪刚  阅读(276)  评论(0编辑  收藏  举报