我有一个SEQUENCE
,我用来设置表的交易开本:
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
什么是惊喜有差距,所以有在表中缺少对开。
例:
- 898,897,894,892,890,889 ...
这意味着,有事情发生。 为了给更多的信息,在INSERT
,我用有前以下存储过程INSERT INTO...
DECLARE @numfolio int
SELECT @numfolio = NEXT VALUE FOR Seq.Folio
当保存从我的应用程序的信息,我使用的数据库的事务,所以如果一切顺利,那么该应用程序不会在COMMIT TRANSACTION
如果不是我做的ROLLBACK TRANSACTION
。
我认为,问题的根源是事务,所以当存在一个错误NEXT VALUE
序列已经生成和ROLLBACK
有没有影响。
任何线索如何解决这个才能有没有间隙完美的序列?