我的序列如下:
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
。
所以现在我有重复的值。为什么我的序列失败了?有什么原因吗?
答案 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)