0

属性の 1 つを として含むテーブル変数を持つストアド プロシージャがあります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 CHECKIDENTなくTRUNCATE TABLE、そのテーブルを削除して再作成することはできません。

列を使用する代わりに、IDENTITY列に挿入するクエリを変更してROW_NUMBER()式を使用することができます。

たとえば、現在持っている場合:

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

sIDENTITYの定義から を削除し、次を使用します。@TID

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 に答える