我有一个T-SQL 表变量(不是表),它有一个自动递增的标识列.我想清除此变量中的所有数据并将标识列值重置为1.如何才能完成此操作?
截断表将转储所有数据,并重置标识种子.
否则,您可以使用此调用重置身份,同时保留任何数据:
DBCC CHECKIDENT (yourtableName, reseed, @NewStartSeedValue)
如果您正在使用表变量,则无法执行此操作.如果它是一个表,你可以截断它或使用它DBCC CHECKIDENT
.但是,如果必须使用表变量,则必须使用标识列以外的其他内容.或者,更准确地说,在表变量中使用标识列,但输出使用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
这是表格变量的最佳选择.