2010-01-10 47 views
2

我使用phpMyAdmin插入一些虛擬數據到一個表,並注意到它的結構是這樣的插入:是否有理由在插入/更新中使用CURRENT_TIMESTAMP?

INSERT INTO `arc`.`transactions` (
    `txn_id` , 
    `date_time` ) 
VALUES (
    '50005', 
    CURRENT_TIMESTAMP); 

通常情況下,我只是不包括場「DATE_TIME」,並通過創造的價值mySQL(因爲該字段是時間戳類型的),並且在您插入或更新記錄時自動更新。

是否有任何理由構建查詢,如上所見,顯式插入CURRENT_TIMESTAMP?或者這是一個phpmyadmin的怪胎?

回答

3

它也可能是一個兼容性問題。 CURRENT_TIMESTAMP由SQL標準定義。自動更新的時間戳列不是。想要可移植並記錄時間戳的應用程序最好明確指定當前時間戳。還有什麼比使用標準內置CURRENT_TIMESTAMP函數更好的方法呢?

+0

這實際上很有意義。謝謝。 – Erik 2010-01-10 21:14:32

3

您可以使TIMESTAMP字段不會自動更新(請參閱TIMESTAMP properties頁面以瞭解如何指定這些內容),因此,根據您如何定義列,UPDATE查詢可能不會自動調整TIMESTAMP字段。

PHPMyAdmin可能在這裏採取安全的方法,並指定值以確保更新,無論列定義如何。如果PHPMyAdmin願意,PHPMyAdmin可能會檢測到默認值,所以另一種可能的解釋是各種服務器版本與其生成的任何SQL的模式之間的兼容性。

3

它完全取決於date_time列定義。如果是喜歡

`date_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 

那麼你肯定不需要插入或更新行時指定任何東西,但如果它是:

`date_time` TIMESTAMP NOT NULL 

然後,你必須在每次創建時指定的東西或更新一行

相關問題