2016-04-26 25 views
0

我有一個'createdTime'/'updatedTime'列的表。最佳實踐:從SQL或代碼生成createdTime

有兩種方法對我來說,填充此列,在SQL或應用程序代碼(Java):

INSERT INTO mytable(createdTime) 
    VALUES (current_timestamp) 

Timestamp ts = new Timestamp(new Date().getTime()); 
preparedStmt.setTimestamp(1, ts); 

我試圖權衡各的利弊方法,我正在畫一個空白;我無法決定爲什麼我會選擇一個。

有什麼建議嗎?謝謝!

回答

1

當您插入新行時,大多數數據庫都有一個默認值選項。這是記錄的創建時間。

這是有道理的使用此功能:

  • 的所有時間都在同一個時區 - 的價值不依賴於在應用程序計算機。
  • 時間戳與數據庫環境的其餘部分保持一致。
  • 時間戳代表插入的實際時間;他們不受同步問題與應用程序服務器。
  • 時間戳總是被填充,即使應用程序層「忘記」包含該值。
+0

謝謝!對'createdTime'有意義。 'updatedTime'如何? –

+0

@JustinWong。 。 。有些數據庫支持內置的更新時間戳(類似於'CreateTime'的初始化,但大多數情況下,您需要編寫一個觸發器,在數據庫中執行它也是一個好主意,但是我會傾向於維護一個存檔表或更改日誌,只需使用該表中的創建時間。 –

+0

我在此處使用此技巧來更新任何在此處發生絆倒的人的更新時間:http://www.revsys.com/blog/2006/aug/04/自動更新管理一個時間戳列合的PostgreSQL / –