Последовательность не получает текущий следующий номер - PullRequest
0 голосов
/ 20 марта 2019

У меня есть последовательность вроде:

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 Ответ

3 голосов
/ 20 марта 2019

Последовательности не синхронизируются автоматически с существующими данными в ваших таблицах.Если вы добавляете последовательность в существующую таблицу, вам необходимо соответствующим образом установить ее start with.

Вы можете сбросить , например:

declare @maxVal bigint = (select max(id) from DesignTable)
declare @sql nvarchar(max) = concat('alter sequence DesignSequence restart with ', @maxVal + 1)
print (@sql)
exec (@sql)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...