Я объявленный эту последовательность:как откатить последовательность в SQL сервере
CREATE SEQUENCE [dbo].[Monitor_Seq]
AS [int]
START WITH 1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 2147483647
CACHE
GO
и я использую его так:
declare @y int
declare @i int
select @y = 1
while @y < 100 begin
SELECT @i = NEXT VALUE FOR Monitor_Seq;
PRINT CAST (@I AS VARCHAR)
-- use @i here
select @y = @y + 1
end /*while*/
вопрос:
, где он говорит, в коде:
- использование @i здесь
Предположим, я решил не продолжать с определенным номером, как я могу вернуть его обратно в свою последовательность? Скажем, когда я получаю следующее значение = 10 ситуации заставила меня НЕ вести с номером 10.
Я хочу, что на следующий раз, когда я получаю
SELECT @i = NEXT VALUE FOR Monitor_Seq;
Я хочу получить @ i = 10 снова. это возможно?
Я не могу ответить на ваш вопрос, потому что мы не используем последовательности, но я призываю вас, чтобы понять, что если эта процедура может быть запущена simulatnaeously для Mulitple пользователей, прокат назад последовательность может быть очень плохой идеей. Если вы создаете число 100, а кто-то одновременно работает с вами, получает 101, а другой получает 102, и вы возвращаетесь для повторного использования 100, вам лучше проверить эффект на 101 и 102. Могли бы они получить два раза? – HLGEM
Зачем вам нужна непрерывная система нумерации, сохраненная в строке? Может ли оконная функция во время запроса получить один и тот же результат? – Will
Если вы используете методы генерации чисел, такие как идентификация и последовательность, вам нужно признать, что пробелы - это просто факт жизни. Прекратите заботиться о пробелах. Если по какой-то причине пробелы катастрофичны, либо исправить **, что **, либо свернуть собственный генератор сериализуемых чисел. Просто поймите, что (a) предотвращение пробелов является дорогостоящим и (b) вы все еще не можете предотвратить * удаляет *, которые вызывают разрывы. –