timestamp (Transact-SQL)

這是顯示在資料庫內自動產生的唯一二進位數字的資料類型。timestamp 通常用來作為版本戳記資料表資料列的機制。儲存體大小是 8 位元組。timestamp 資料類型只是會遞增的數字,因此不會保留日期或時間。若要記錄日期或時間,請使用 datetime 資料類型。

備註

每個資料庫都有一個計數器,會針對在資料庫內包含 timestamp 資料行的資料表所執行的每個插入或更新作業而累加。這個計數器是資料庫時間戳記。這會追蹤資料庫內的相對時間,而不是可關聯於時鐘的實際時間。資料表只能有一個 timestamp 資料行。每次修改或插入含 timestamp 資料行的資料列時,都會在 timestamp 資料行中插入累加的資料庫時間戳記。這個屬性會使 timestamp 資料行不適合作為索引鍵 (尤其是主索引鍵) 的候選項。資料列的任何更新都會變更時間戳記值,因而會變更索引鍵值。如果資料行在主索引鍵中,舊的索引鍵值便不再有效,參考舊值的外部索引鍵也不再有效。如果動態資料指標參考資料表,所有更新都會變更資料列在資料指標中的位置。如果資料行在索引鍵中,資料列的所有更新也會產生索引的更新。

您可以利用資料列的 timestamp 資料行來輕易判斷上次讀取資料列之後,資料列中的任何值是否有任何改變。如果資料列有了任何改變,就會更新時間戳記值。如果資料列沒有任何改變,時間戳記值就與先前讀取時相同。若要傳回資料庫目前的時間戳記值,請使用 @@DBTS

Transact-SQL timestamp 資料類型不同於 SQL-2003 標準中所定義的 timestamp 資料類型。SQL-2003 timestamp 資料類型相當於 Transact-SQL datetime 資料類型。

rowversiontimestamp 資料類型的同義字,遵照資料類型同義字的行為。在 DDL 陳述式中,請盡可能利用 rowversion 來取代 timestamp。如需詳細資訊,請參閱<資料類型同義字 (Transact-SQL)>。

在 CREATE TABLE 或 ALTER TABLE 陳述式中,您不需要指定 timestamp 資料類型的資料行名稱,例如:

CREATE TABLE ExampleTable (PriKey int PRIMARY KEY, timestamp);

如果您沒有指定資料行名稱,Microsoft SQL Server 2005 Database Engine 會產生 timestamp 資料行名稱;不過,rowversion 同義字不會遵照這個行為。當您使用 rowversion 時,您必須指定一個資料行名稱。

ms182776.note(zh-tw,SQL.90).gif附註:
您可以利用 SELECT INTO 陳述式來產生重複的時間戳記值,timestamp 資料行在 SELECT 清單中。我們不建議您利用這個方式來使用 timestamp

不可為 Null 的timestamp 資料行,語意等於 binary(8) 資料行。可為 Null 的 timestamp 資料行,語意等於 varbinary(8) 資料行。

請參閱

參考

ALTER TABLE (Transact-SQL)
CAST 和 CONVERT (Transact-SQL)
CREATE TABLE (Transact-SQL)
資料類型 (Transact-SQL)
DECLARE @local\_variable (Transact-SQL)
DELETE (Transact-SQL)
INSERT (Transact-SQL)
MIN_ACTIVE_ROWVERSION (Transact-SQL)
SET @local\_variable (Transact-SQL)
UPDATE (Transact-SQL)

其他資源

資料類型轉換 (Database Engine)

說明及資訊

取得 SQL Server 2005 協助