2011-08-03 54 views
1

如何輕鬆捕獲記錄添加到數據庫的時間。我正在使用這個最佳和最簡便的捕捉時間的方式

create table YourTable 
(
    Created datetime default getdate() 
) 

還有其他的選擇嗎?

+0

一定要將NOT NULL添加到列中。 – beach

+1

考慮GETUTCDATE()而不是GETDATE()。 –

+0

應用程序的體系結構是什麼?所有數據訪問是通過存儲過程還是視圖,還是應用程序直接查詢表? –

回答

1

仍然使用默認約束......還有其他值可以考慮使用 - 每個值都有不同的優點(涉及通用時間,精度等)。

http://msdn.microsoft.com/en-us/library/ms188383.aspx

而且 - 考慮你的數據類型的大小 - 日期時間爲8個字節 - 你可以定義列SMALLDATETIME和完善,爲4個字節(或2008年,只是普通的舊日期,這是3字節 - 雖然你可能真的很喜歡知道時間)。

觸發器也是一種選擇,但並不是優選的IMO - 一方面,如果違反任何約束條件(例如與剛剛創建的表的外部關係,忘記觸發器 - oops !)

2

我認爲這是規範的方法,你有問題嗎?

其他方法將使用插入觸發器,這可能是較慢和稍微複雜的代碼是在兩個地方。或者你可以通過一個SP來引導所有的更新,這也會更新創建的字段 - 這又稍微複雜一些,並且很容易規避,除非你的權限被仔細設置。

1

選項:

  1. 默認列(你有)
  2. INSERT觸發器更新列到CURRENT_TIMESTAMP

選項#2是比較簡單的,因爲它總是與GETDATE更新()。使用選項#1允許用戶通過在INSERT子句中指定它來手動覆蓋創建的日期。