SQL Server 数据类型 ROWVERSION
RowVersion数据类型是系统自动生成的,唯一的,二进制数字,数值和binary(8)相同,RowVersion通常用作给Table的数据行加版本戳,存储大小为 8 个字节。RowVersion数据类型只是永恒递增的数字,不保留日期或时间,但是可以使用RowVersion来比较数据行更新时间的先后.
例如:
CREATE TABLE fact_employee
(
id BIGINT NOT NULL,
employee_name VARCHAR(256) NOT NULL,
last_change ROWVERSION NOT NULL
);
CREATE TABLE dayrowversion
(
dim_date INT NOT NULL,
last_change ROWVERSION NOT NULL
);
--------------------------------------------------------------------------------------------------------------------------------------
INSERT INTO fact_employee(id, employee_name) VALUES(1, 'Kingle'),(2,'Honery'),(3,'Dim');
INSERT INTO dayrowversion(dim_date) VALUES(20191124)
INSERT INTO fact_employee(id, employee_name)VALUES(4,'Google'),(5,'Yah');
UPDATE fact_employee SET employee_name = 'KK' WHERE id = 2;
INSERT INTO dayrowversion(dim_date) VALUES(20191125)
--------------------------------------------------------------------------------------------------------------------------------------
DECLARE @startversion ROWVERSION;
DECLARE @endversion ROWVERSION;
SELECT @startversion = last_change FROM dayrowversion where dim_date = 20191124
SELECT @endversion = last_change FROM dayrowversion where dim_date = 20191125
SELECT * FROM fact_employee WHERE last_change BETWEEN @startversion AND @endversion
id | employee_name | lastchange |
---|---|---|
2 | KK | 0x00000000000007DF |
4 | 0x00000000000007DD | |
5 | Yah | 0x00000000000007DE |