序列未获得当前的下一个号码

时间:2019-03-20 17:50:53

标签: sql sql-server tsql sequence

我的序列如下:

CREATE SEQUENCE [dbo].[DesignSequence] 
 AS [int]
 START WITH 1
 INCREMENT BY 1
 MINVALUE 0
 MAXVALUE 2147483647
 CACHE 
GO

所以在我的表中,我在Default Value or Binding : (NEXT VALUE FOR [dbo].[DesignSequence])中有此顺序的列

由于某种原因,问题是我的下一个数字是4140,但是当我向表中添加新行时,它又添加了数字:3627。 所以现在我有重复的值。为什么我的序列失败了?有什么原因吗?

1 个答案:

答案 0 :(得分:3)

序列不会自动与表中的现有数据同步。如果要将序列添加到现有表中,则需要适当设置其start with

您可以reset像这样:

declare @maxVal bigint = (select max(id) from DesignTable)
declare @sql nvarchar(max) = concat('alter sequence DesignSequence restart with ', @maxVal + 1)
print (@sql)
exec (@sql)