C# SQL Server序列间隙
我有一个C# SQL Server序列间隙,c#,sql,sql-server,sqltransaction,C#,Sql,Sql Server,Sqltransaction,我有一个序列,用于设置表的事务对开: CREATE SEQUENCE [Seq].[Folio] AS [bigint] START WITH 114090 INCREMENT BY 1 MINVALUE -9223372036854775808 MAXVALUE 9223372036854775807 CACHE 今天,出于好奇,我做了一个: SELECT folio FROM transactions ORDER BY folio DESC 令人惊讶的是,表格中有空白,所
序列
,用于设置表的事务对开:
CREATE SEQUENCE [Seq].[Folio]
AS [bigint]
START WITH 114090
INCREMENT BY 1
MINVALUE -9223372036854775808
MAXVALUE 9223372036854775807
CACHE
今天,出于好奇,我做了一个:
SELECT folio
FROM transactions
ORDER BY folio DESC
令人惊讶的是,表格中有空白,所以缺少对开本
例如:
- 898897894892890889
INSERT
存储过程在INSERT-INTO…
DECLARE @numfolio int
SELECT @numfolio = NEXT VALUE FOR Seq.Folio
在保存应用程序中的信息时,我使用了数据库事务,因此,如果一切顺利,那么应用程序将执行提交事务
,否则,我将执行回滚事务
我认为问题的根源在于事务,因此当出现错误时,序列的下一个值
已经生成,并且回滚
对该错误没有影响
如何解决这个问题,以获得一个没有间隙的完美序列,有什么线索吗?所以,关于序列,您应该了解一些事情
至于如何获得一个完美的序列,那么,可能唯一的方法就是在可序列化事务中从表中获取最大值。现在你应该问自己的问题是“它们真的需要顺序吗?”我真的很喜欢这个答案!!你完全正确。。。没有太大的需要顺序,事实上我很担心,但现在你告诉我如何工作,然后没有问题!!谢谢