gpt4 book ai didi

sql-server - rowversion 跳过 0xFF 之后的整数

转载 作者:行者123 更新时间:2023-12-03 21:31:51 26 4
gpt4 key购买 nike

根据rowversion docs

Each database has a counter that is incremented for each insert or update operation that is performed on a table that contains a rowversion column within the database.

然而,当从 FF 循环回到 01 时,这个“增量”会跳过一个整数。例如

0x00000000000007FF
0x0000000000000801

要复现,建表

CREATE TABLE [dbo].[TestTable](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[SomeData] [varchar](200) NOT NULL,
[RowVersion] [rowversion] not null
) ON [PRIMARY]

现在添加一些插入物:

DECLARE @i INT = 0

WHILE @i < 256
BEGIN
SET @i = @i + 1

INSERT INTO [TestTable] ([SomeData]) VALUES (CONVERT(VARCHAR(255), NEWID()))
END

查看数据:

select * from [TestTable] order by [RowVersion] asc

数据会根据你是否使用过rowversion而有所不同我们在这种情况下看到 2047 (0x00000000000007FF) 跳转到 2049 (0x0000000000000801)

这是为什么?

enter image description here

最佳答案

引用文档提到 rowversion 值是唯一的、二进制的和递增的。它并没有说不会有差距。该值旨在用于乐观并发验证,因此对于该目的而言,差距应该无关紧要。

关于sql-server - rowversion 跳过 0xFF 之后的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49311205/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com