Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Salinan kaskade baris dalam sql

Anda dapat menggunakan penggabungan pernyataan dengan klausa output untuk mendapatkan kecocokan antara id lama dan baru di questionText. Ini dijelaskan dalam pertanyaan ini Menggunakan merge..output untuk mendapatkan pemetaan antara source.id dan target.id .

Dalam kasus Anda, kodenya akan terlihat seperti ini. Kode tidak diuji sehingga mungkin ada sejumlah kesalahan ketik di sana, tetapi kode ini menunjukkan apa yang dapat Anda lakukan.

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menghapus data tabel yang besar dalam SQL tanpa log?

  2. SQL Server memformat tempat desimal dengan koma

  3. Bagaimana Fungsi CHAR() Bekerja di SQL Server (T-SQL)

  4. Bagaimana cara mengirim email dari SQL Server?

  5. SQL Server:GROUP BY dua tingkat dengan keluaran XML