2014-05-20 36 views
1

我有一个具有两个TIMESTAMP列(CREATION_DATE和EDIT_DATE),其自动填补INSERT(两列得到CURRENT_TIMESTAMP)和UPDATE(只有EDIT_DATE列改变)行为差异

动作表

... CreationDate时间戳NOT NULL DEFAULT '0000-00-00 00:00:00', EditDate时间戳NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ...

:通过这个代码做

我需要从TIMESTAMP类型更改为DATE,并尝试:

... 
`CREATED_DATE` date NOT NULL DEFAULT '0000-00-00', 
`EDITED_DATE` date NOT NULL DEFAULT CURRENT_DATE ON UPDATE CURRENT_DATE, 
... 

我怎样才能获得相同的行为。任何回应将不胜感激。

+0

的哪个版本MySQL的?在v5.6.5之前,只有TIMESTAMP列可以自动初始化并更新为当前的日期和时间,并且始终使用'CURRENT_TIMESTAMP'而不是'CURRENT_DATE'。 –

回答

1

没有它不可能,除非你使用mysql 5.6.5 唯一的选择是可用的,直到5.6.5是使用字段类型作为时间戳,然后设置一个不是常量的默认值。

数据类型规范中的DEFAULT值子句指示列的默认值为 。有一个例外,默认值必须是 是一个常数;它不能是一个函数或表达式。这意味着,例如, ,例如,您不能将日期列的默认值设置为 函数的值,例如NOW()或CURRENT_DATE。唯一的例外是 您可以指定CURRENT_TIMESTAMP为默认的 TIMESTAMP

如果你正在使用MySQL 5.6.5,那么你可以把这个行为DATETIME数据类型

http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html

+0

感谢您的答案阿比克。 – Mike

+0

不用客气,这是很多人犯的一个很常见的错误。 –