Moo*_*ght 6 t-sql dynamic-sql identity-column sql-server-2008
全部,我想IDENTITY根据从另一个表获得的当前最大值开始字段的编号.所以我尝试了类似下面的内容
DECLARE @CurrentES INT;
SET @CurrentES = (SELECT MaxES
FROM [NDB]..[TmpMaxES]) + 1;
ALTER TABLE BA
ADD ES INT IDENTITY(@CurrentES, 1);
Run Code Online (Sandbox Code Playgroud)
但是这不会接受变量作为IDENTITY中的种子值.我怎样才能实现我的目标?
谢谢你的时间.
做这个和其他非变量允许的任务,你可以使用EXEC函数,如下:
DECLARE @CurrentES INT;
SET @CurrentES = (SELECT MaxES
FROM [NDB]..[TmpMaxES]) + 1;
DECLARE @Statement VARCHAR(200)
SET @Statement = 'ALTER TABLE BA
ADD ES INT IDENTITY(' + CAST(@CurrentES AS VARCHAR) + ', 1);'
EXEC (@Statement)
Run Code Online (Sandbox Code Playgroud)
您可以使用dbcc checkidentSQL Server 的功能...
DECLARE @MAXID INT
SELECT @MAXID = MAX(ID_FIELD) FROM OLDTABLE
dbcc checkident(NEWTABLE, reseed, @MAXID)
Run Code Online (Sandbox Code Playgroud)
需要注意的一点是,第3个参数(在本例中为@MAXID变量)中的值表示当前标识值 - 换句话说,表示在表上生成的最后一个标识值.
因此,例如,如果您想要自动创建的下一个值100,则将第3个参数设置为99.