2014-05-20 34 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

不用客氣,這是很多人犯的一個很常見的錯誤。 –