0

我有一个存储过程,其表变量包含一个属性作为Id int NOT NULL IDENTITY(1,1). 在每次执行中,它的值都会附加上一个。

我想清除每次执行中的值,Id并且在每次执行中它应该以 1 开头

这是我创建的代码

create procedure OnetPlus_processing 
as
begin
declare @input_data table (
  Id int NOT NULL IDENTITY(1,1),
  jobid int,
  title varchar(400),
  jobtitle varchar(400),
  titlerev varchar(400),
  jobtitlerev varchar(400)
)

insert into @input_data
select jobid ,title,jobtitle,titlerev,jobtitlerev
from job.dbo
left outer join .....................
4

2 回答 2

1

您无法重置IDENTITY表变量的列。表变量在DBCC CHECKIDENTnor中均无效TRUNCATE TABLE,您不能删除该表并重新创建它。

IDENTITY您可以修改插入其中的查询以使用ROW_NUMBER()表达式,而不是使用列。

例如,如果您目前有:

INSERT INTO @T (Col1,Col2)
SELECT ColA,ColB from <source query> ORDER BY ColA

IDENTITY从 s 的定义中删除@TsID并使用:

INSERT INTO @T (ID,Col1,Col2)
SELECT ROW_NUMBER() OVER (ORDER BY ColA),ColA,ColB from <source query>
于 2012-09-24T06:38:31.433 回答
0

试试这个,

DBCC CHECKIDENT (mytable, RESEED, 1)

需要注意的是,为了使用DBCC CHECKIDENT你需要dbo (db_owner).

于 2012-09-24T05:12:55.560 回答