有很多朋友也都會誤認為:時間戳是一個時間字段,每次增加數據時,填入當前的時間值。其實這誤導了很多朋友。
時間戳僅僅是個一直在遞增的標識版本號,與時間沒有任何關系。

時間戳列一直+1遞增
1.基本概念
時間戳是數據庫中自動生成的唯一二進制數字,與時間和日期無關的,通常用作給表行加版本翟的機制。存儲大小為8個字節。
每個數據庫都有一個計數器,可用@@DBTS查看,當對數據庫中包含timestamp列的表執行插入或更新操作時,該計數器值就會增加。該計數器是數據庫時間戳。這可以跟蹤數據庫內的相對時間,而不是時鐘相關聯的實際時間。一個表只能有一個timestamp列。每次修改或插入包含timestamp列的行時,就會在timestamp列中插入增量數據庫時間戳值。
使用某一行中的timestamp列可以很容易地確定該行中的任何值自上次讀取以后是否發生了更改。如果對行進行了更改,就會更新該時間戳值。如果沒有對行進行更改,則該時間戳值將與以前讀取該行時的時間戳值一致。
2時間戳的作用
在控制并發時起到作用,用戶同時打開某條記錄開始編輯,保存是可以判斷時間戳,因為記錄每次被更新時,系統都會自動維護時間戳,所以如果保存時發現取出來的時間戳與數據庫中的時間戳不相等,說明在這個過程中記錄被更新過,這樣的話可以防止別人的更新被覆蓋。
3.時間戳的應用
timestamp主要是記錄該行的最后修改時間戳,注意,這個時間戳是不可以轉換為時間的,只能標注該行修改了。
(微軟的建議-- timestamp語法已被取代,在DDL語句,請盡量使用rowversion而不是timestamp。 rowversion就是timestamp