SQL Server序列设置当前值

时间:2014-11-25 19:37:18

标签: sql-server sequence

我正在使用SQL Server 2012(v11.0.2100),我想创建一个以随机(动态)数字开头的序列,但我无法做到这一点,我也努力寻找一个好的解决方案为此,但我没有找到能满足我的东西。

我尝试过但失败的案例:

 DECLARE @sth bigint

 SET @sth = 1000

 ALTER SEQUENCE StreamEntrySequence
 RESTART WITH @sth;

错误:

  

'@sth'附近的语法不正确

丑陋的解决方案

 declare @sth bigint;
 declare @i bigint;

 SET @sth = 100000    ; 

 while @i<@sth;
 BEGIN
    SET @i= next value for StreamEntrySequence;
 END

还有其他方法可以将当前值或起始值设置为随机值吗?也许使用服务器程序?

3 个答案:

答案 0 :(得分:10)

如前所述,这需要动态SQL,因为alter sequence需要restart参数的常量。

你可能会这样做,然后:

DECLARE @sth bigint;
SET @sth = 1000;
DECLARE @sql nvarchar(max);
SET @sql = N'ALTER SEQUENCE StreamEntrySequence RESTART WITH ' + cast(@sth as nvarchar(20)) + ';';
EXEC SP_EXECUTESQL @sql;

答案 1 :(得分:2)

尝试

ALTER SEQUENCE foo.fee
RESTART

或者:

ALTER SEQUENCE foo.fee
RESTART WITH 1

http://msdn.microsoft.com/en-us/library/ff878572.aspx

答案 2 :(得分:0)

随便用

SELECT setval('seq',0,false);

它将序列“seq”的值设置为0。