マージ を使用できます questionText の古い ID と新しい ID の一致を取得する output 句を含むステートメント。これはこの質問 merge..output を使用して source.id と target.id 間のマッピングを取得する .
あなたの場合、コードは次のようになります。コードはテストされていないため、タイプミスがいくつかあるかもしれませんが、何ができるかを示しています。
create procedure CopyQuestion @idtocopy int as declare @QuestionID int insert into question select Name from question where ID = @idtocopy select @QuestionID = scope_identity() declare @IDs table (NewQID int, OldQID int) merge questionText as T using (select ID, @QuestionID as QuestionID, Field from questionText where QuestionID = @idtocopy) as S on 0=1 when not matched then insert (QuestionID, Field) values (QuestionID, Field) output inserted.ID, S.ID into @IDs; insert into options select I.NewQID, O.Field from options O inner join @IDs as I on O.QuestionTextID = I.OldQID
プレ>