Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एसक्यूएल में पंक्तियों की कैस्केड कॉपी

आप मर्ज का उपयोग कर सकते हैं प्रश्न टेक्स्ट में पुरानी और नई आईडी के बीच मिलान प्राप्त करने के लिए आउटपुट क्लॉज के साथ स्टेटमेंट। यह इस प्रश्न में वर्णित है source.id और target.id के बीच मैपिंग प्राप्त करने के लिए merge..output का उपयोग करना

आपके मामले में कोड कुछ इस तरह दिखेगा। कोड का परीक्षण नहीं किया गया है, इसलिए इसमें टाइपो की कोई भी संख्या हो सकती है लेकिन यह दिखाता है कि आप क्या कर सकते हैं।

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. क्या मैं SQL सर्वर डेटाबेस में 'ऑब्जेक्ट' सहेज सकता हूं?

  2. डीबीए - SQL सर्वर पर सभी डेटाबेस प्रक्रियाओं को कैसे मारें

  3. SQL सर्वर में अल्पविराम से अलग की गई सूची के रूप में क्वेरी परिणाम कैसे लौटाएं - STRING_AGG ()

  4. सी # में एसक्लट्रांसक्शन का उपयोग कैसे करें

  5. डेटाबेस में पासवर्ड स्टोर करने का पसंदीदा तरीका