mysql timestamp自动更新

最近遇到timestamp的自动更新时间问题,记录如下:

 

先看mysql官方手册(翻译稿):

 

在CREATE TABLE语句中,可以用下面的任何一种方式声明第1个TIMESTAMP列:


1.用DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP子句,列为默认值使用当前的时间戳,并且自动更新。


2 .不使用DEFAULT或ON UPDATE子句,与DEFAULT CURRENT_TIMESTAMP ON UPDATECURRENT_TIMESTAMP相同。


3.用DEFAULT CURRENT_TIMESTAMP子句不用ON UPDATE子句,列为默认值使用当前的时间戳但是不自动更新


4. 不用DEFAULT子句但用ON UPDATE CURRENT_TIMESTAMP子句,列有默认值0并自动更新。


5.用常量DEFAULT值,列有给出的 默认值。如果列有一个ON UPDATE CURRENT_TIMESTAMP子句,它自动更新,否则不。换句话说,你可以为初始值和自动更新的值使用当前的时间戳,或者其中一个使用,或者两个皆不使用。(例如,你可以指定ON UPDATE来启用自动更新而不让列自动初始化)。

 

补充说明:

1. 如果表中多列为timestamp,那么每次更新数据的时候,对应行的第一个timestamp会自动更新为CURRENT_TIMESTAMP

2. timestamp大体和datetime一致,从实现上来讲,用datetime其实基本可以满足需求,从业务端来控制数据值,而不是让数据库来做

3. 要让行自动更新timestamp值,可以设置该字段的属性为 ON UPDATE CURRENT_TIMESTAMP,这样如果该行的数据列发生变化,则timestamp会自动更新。

参见:http://dongxuan.iteye.com/blog/901465

image

posted @ 2012-11-15 09:17  简单-陈勇  阅读(415)  评论(0编辑  收藏  举报