То, что вам нужно, никогда не будет работать со столбцами идентификаторов.
Они спроектированы так, чтобы «выдавать» и «забывать», создавая так, чтобы они не вызывали ожиданий, взаимных блокировок и т. Д. Свойство позволяет использовать столбцы IDENTITY в качестве последовательности в системе с высокой степенью транзакций без задержки или узких мест. .
Чтобы убедиться, что нет пропусков, это означает, что НЕТ ПУТИ для реализации системы со скоростью 100 вставок в секунду, потому что будет очень длинная очередь, чтобы выяснить, будет ли откат 1-й вставки отменен.
По той же причине вы обычно не хотите ни такое поведение, ни такую числовую последовательность для таблицы большого объема. Однако для очень редких таблиц с одним процессом (например, номер счета на один процесс в месяц) допустимо размещать транзакцию вокруг MAX(number)+1
или аналогичного запроса, например,
declare @next int
update sequence_for_tbl set @next=next=next+1
.. use @next