当前位置:  开发笔记 > 数据库 > 正文

如何在T-SQL表变量中重新设置标识列?

如何解决《如何在T-SQL表变量中重新设置标识列?》经验,为你挑选了2个好方法。

我有一个T-SQL 表变量(不是表),它有一个自动递增的标识列.我想清除此变量中的所有数据并将标识列值重置为1.如何才能完成此操作?



1> Stephen Wrig..:

截断表将转储所有数据,并重置标识种子.

否则,您可以使用此调用重置身份,同时保留任何数据:

DBCC CHECKIDENT (yourtableName, reseed, @NewStartSeedValue)


一个人不能TRUNCATE一个表变量,也不能在表变量上使用DBCC CHECKIDENT.
-1问题是关于表变量的.如上面的评论所示,这个答案中没有任何内容可以用于这些.
我同意,-1这个答案没有为表变量提供任何有用的东西.
是的,这只适用于表,而不是表变量: - /

2> Josef..:

如果您正在使用表变量,则无法执行此操作.如果它是一个表,你可以截断它或使用它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

这是表格变量的最佳选择.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有