在資料庫內產生可存放二進位數字的 Rowversion 欄位,資料新增或修改時會自動增加,常用來記錄資料的版本。
說明
每個資料表只能建立一個 Rowversion 欄位。建立或更新資料列後,該資料列的 Rowversion 欄位的值會增加,如同計數器一樣。
每個資料列的 Rowversion 數值都是唯一的,大小為 8 個 Byte。
這個欄位無法對應到實際的時間,也不適合放入索引內。
範例
來進行個簡單的實驗:
-- 建立含 Rowversion 的欄位
CREATE TABLE MyTest (myKey int PRIMARY KEY, myValue int, RV rowversion);
INSERT INTO MyTest (myKey, myValue) VALUES (1, 0);
INSERT INTO MyTest (myKey, myValue) VALUES (2, 0);
-- 檢查插入資料後的結果
SELECT myKey, myValue, RV FROM MyTest
UPDATE MyTest SET myValue = 1
WHERE myKey = 2
-- 檢查更新資料後的結果
SELECT myKey, myValue, RV FROM MyTest
插入資料後的 SELECT
結果 (使用 SQL Online IDE 的檢視畫面):
第一筆,可看到 RV 欄位由 8 個 Byte 組成。
第二筆,可看到和第一筆的 RV 值不同。
接著是更新資料後的結果:
第一筆,維持不變。
第二筆,因為已經更新,所以最後一個 Byte 的數字增加了。
增加的數字不一定是 1,由 SQL Server 自行決定。