2013-04-17 46 views
0

我在mysql表中有一個字段,其數據類型爲datetime,默認值爲CURRENT_TIMESTAMP。我認爲它會把這個值只在插入。這在插入和更新時都發生了變化。這是否合適?mysql中的日期時間數據類型

我沒有ON UPDATE CURRENT_TIMESTAMP,那麼也更新它的列。

我的問題是一樣,如果我有數據類型datetime和默認值的列CURRENT_TIMESTAMP將它更改列時記錄的更新發生,即使ON UPDATE CURRENT_TIMESTAMP不是嗎?

+0

'ON UPDATE CURRENT_TIMESTAMP' ??? ??? – Khaleel

回答

1

聽起來好像你有:

DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 

但是,看來你想:

DEFAULT CURRENT_TIMESTAMP 

這兩者之間的區別,是第一個將上更新的時間戳列插入和更新,第二個將僅在插入期間提供TIMESTAMP,並且將在行更新時更新而不是

通過使用MySQL中的DESCRIBE函數來描述特定表格的模式,您可以檢查表格的使用情況。

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

0

mysql doc

與這兩個DEFAULT CURRENT_TIMESTAMPON UPDATE CURRENT_TIMESTAMP,列有它的默認值使用當前的時間戳,並且自動更新爲當前時間戳。

CREATE TABLE t1 (
    ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 
); 

隨着既不DEFAULT CURRENT_TIMESTAMP也不ON UPDATE CURRENT_TIMESTAMP,它是相同的同時指定DEFAULT CURRENT_TIMESTAMPON UPDATE CURRENT_TIMESTAMP

CREATE TABLE t1 (
    ts TIMESTAMP 
); 

隨着DEFAULT條款,但沒有ON UPDATE CURRENT_TIMESTAMP子句,列有給出的默認值,並不會自動更新爲當前的時間戳。

默認取決於DEFAULT子句是指定CURRENT_TIMESTAMP還是常數值。使用CURRENT_TIMESTAMP時,默認值是當前時間戳。

CREATE TABLE t1 (
    ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP 
); 
相關問題