0

テーブルの正確なコピーを作成しようとしていますが、2 つの列の値を変更しています。基本的に、db テーブルには 800 のエントリがあり、さらに 800 のエントリが必要ですが、列の 1 つの値 (Set_id を 11 にする) が必要で、別の列の値を自動インクリメントする必要があります... 残念ながら列は ID 挿入ではありません。一時テーブルを作成し、既存のテーブルを一時テーブルにコピーしました。次に、一時テーブルを元のテーブルに書き戻して、その 1 つの列を 11 として、doctype id 列を 860 で開始し、各エントリを 1 ずつ自動インクリメントしようとしています。このカーソルを作成しました:

declare @id int, @document char(30)
select @id = 860
declare documents cursor for
/* This will select all Non-Physician users */
  select tag from cabinet..document_names

open documents

fetch next from documents into @document
while @@fetch_status <> -1
begin
 select @id = @id +1
      if not exists (select * from cabinet..document_names where set_id='11' and tag=@document)
      insert into cabinet..document_names (TAG, TAGORDER, ACTIVE,QUEUE, REASON, FORM,DIRECT_VIEW,GLOBAL,FU_SIGN,SIGN_X,
SIGN_Y,SIGN_W,SIGN_H,ANNOTATE,doctype_id,CODE,CALCTABLE_ID, DOC_TYPE,SET_ID,SUSPEND_DELAY,Text_Editing,Restrict_Viewing,Viewing_Expire,
Viewing_Period , DocHdrLength,DocHdrSearchString,DocFtrLength,DocFtrPageNo,DocRuleId,Outbound,SigQueue,SigReason)
select TAG, TAGORDER, ACTIVE,QUEUE, REASON, FORM,DIRECT_VIEW,GLOBAL,FU_SIGN,SIGN_X,
SIGN_Y,SIGN_W,SIGN_H,ANNOTATE,@ID,CODE,CALCTABLE_ID, DOC_TYPE,'11',SUSPEND_DELAY,Text_Editing,Restrict_Viewing,Viewing_Expire,
Viewing_Period , DocHdrLength,DocHdrSearchString,DocFtrLength,DocFtrPageNo,DocRuleId,Outbound,SigQueue,SigReason from
cabinet..document_names_temp 


fetch next from documents into @document

end
close documents 
deallocate documents

doctype idが861、861などとして繰り返されることを除いて、私が望むことを正確に行っています。元のテーブルにエントリするたびに、その番号を1ずつ増やす必要があります。私がめちゃくちゃになっている場所についての助けがあれば幸いです!ありがとう!

4

1 に答える 1

1

すべきではない

  INSERT INTO cabinet..document_names ([columns])
  SELECT [columns] 
  FROM cabinet..document_names_temp 

WHERE声明もありますか?何かのようなもの

  INSERT INTO cabinet..document_names ([columns])
  SELECT [columns] 
  FROM cabinet..document_names_temp 
  WHERE TAG = @Document

document_names_temp現在、挿入はdoctype_idset toで見つけることができる各レコードを挿入するだけで@ID、861、861、861の繰り返しを説明します..おそらくdocttype_id862でも同じ量のレコードがあります。

于 2013-05-01T05:56:13.067 に答える