0
我宣布这个顺序:如何还原SQL Server中的序列
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*/
的问题是:
在那里说在代码中:
- use @i here
假设我决定不继续使用特定的号码,我怎样才能恢复我的序列? 让当我的下一个值的说= 10 情况使我不能与10
我要的号码,下一次上我得到的
SELECT @i = NEXT VALUE FOR Monitor_Seq;
我想进行@我再次是10。 这可能吗?
我不能回答你的问题,因为我们不使用序列,但我请你意识到,如果这个PROC可以simulatnaeously的多张用户运行,滚动回到序列可能是一个非常糟糕的主意。如果生成的数字为100,并且与您同时运行的某人获得了101,而另一个人获得了102并且您返回到重新使用100,那么您最好测试以查看101和102上的效果。他们可以分配两次吗? – HLGEM 2014-10-29 15:13:22
为什么你需要一个连续的编号系统保存在行中?查询时间的窗口函数是否能够产生相同的结果? – Will 2014-10-29 15:19:33
如果你正在使用数字生成技术,如身份和序列,你需要接受的是,差距只是生活中的事实。停止关注差距。如果出于某种原因差距是灾难性的,请修复**,或者推出自己的可序列化数字发生器。只要认识到(a)防止差距是昂贵的,(b)你仍然不能防止*删除*导致差距。 – 2014-10-29 15:23:03