時間戳記 (SQL Server Compact)

一種會公開自動在資料庫中產生之唯一二進位數字的資料類型。rowversion 和 timestamp 為資料類型同義字。rowversion 一般會當做版本戳記資料表資料列的機制使用。儲存大小為 8 個位元組。rowversion 資料類型是遞增的數字,而且不會保留日期或時間。若要記錄日期或時間,請使用 datetime 資料類型。

備註

rowversion 資料類型的特性如下:

  • 資料表只能有一個 rowversion 資料行。

  • 每次插入或更新包含 rowversion 資料行的資料列時,就會更新 rowversion 資料行中的值。這會讓 rowversion 資料行變成索引鍵 (特別是主索引鍵) 的不佳候選者。

  • rowversion 是一個唯讀的資料行,而且無法更新。

  • rowversion 在資料庫中是唯一的。

  • 若要針對資料庫傳回目前的 rowversion 值,請使用 @@DBTS 命令。

重要

交易遭到復原或某些驗證失敗時,無法將 rowversion 計數器重設為舊的值。這是禁止的,因為如果同時發生其他交易,重設計數器可能會引起問題。若要尋找目前的 rowversion 值,您可以使用 @@DBTS 進行查詢。在 SQL Server 到 SQL Server Compact 間進行複寫 (反之亦然) 時,不會將 timestamp 資料行從一個資料庫複寫到另一個資料庫。這有助於確保 timestamp 的唯一性。複製的值可能會與某些資料列的現有值或後續值發生衝突。

範例

如果您使用的是 timestamp 資料類型,針對 SQL Server 和 SQL Server Compact 撰寫的查詢陳述式會有所不同。在 SQL Server 中,如果您使用的是 timestamp 資料類型,資料行名稱是選擇性的。不過,在 SQL Server Compact 中,資料行名稱為強制的。

如果您使用的是 rowversion 資料類型,則不論您使用 SQL Server 或 SQL Server Compact,都一定要指定資料行名稱。下列範例說明使用 timestamp 和 rowversion 關鍵字的查詢。

SQL Server

SQL Server Compact 3.5

查詢

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

Timestamp 查詢

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

Rowversion 查詢

Create table t1 (c1 int PRIMARY KEY, c2 nvarchar(50), c3 rowversion);

Rowversion 查詢

Create table t1 (c1 int PRIMARY KEY, c2 nvarchar(50), c3 rowversion);

請參閱

參考

@@DBTS (SQL Server Compact)