如何在T-SQL表变量中重新设置标识列?
时间:2020-03-06 14:51:27 来源:igfitidea点击:
我有一个T-SQL表变量(不是表),它具有一个自动递增的标识列。我想清除此变量中的所有数据,并将标识列的值重置为1. 如何做到这一点?
解决方案
截断该表将转储所有数据,并重置标识种子。
否则,我们可以使用此调用在保留任何数据的同时重置身份:
DBCC CHECKIDENT (yourtableName, reseed, @NewStartSeedValue)
如果使用表变量,则无法执行。如果它是一个表,则可以截断它或者使用DBCC CHECKIDENT
。但是,如果必须使用表变量,则必须使用标识列以外的其他内容。或者,更准确地说,使用表变量中的identity列,但使用ROWNUMBER
输出:
DECLARE @t table (pkint int IDENTITY(1,1), somevalue nvarchar(50)) INSERT INTO @t (somevalue) VALUES( 'one') INSERT INTO @t (somevalue) VALUES('twp') INSERT INTO @t (somevalue) VALUES('three') SELECT row_number() OVER (ORDER BY pkint), somevalue FROM @t DELETE FROM @t INSERT INTO @t (somevalue) VALUES('four') SELECT row_number() OVER (ORDER BY pkint), somevalue FROM @t
最好使用table变量。