テーブルの正確なコピーを作成しようとしていますが、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ずつ増やす必要があります。私がめちゃくちゃになっている場所についての助けがあれば幸いです!ありがとう!