Veritabanımda bazı değişiklikler yaptım ve eski verileri yeni tablolara taşımam gerekiyor. Bunun için, orijinal tablodan verileri alarak bir tabloyu (ReportOptions) doldurmam (Uygulama) ve ikinci bir ara tablo (PracticeReportOption) doldurmam gerekiyor.
ReportOption (ReportOptionId int PK, field1, field2...)
Practice (PracticeId int PK, field1, field2...)
PracticeReportOption (PracticeReportOptionId int PK, PracticeId int FK, ReportOptionId int FK, field1, field2...)
Pratikten ReportOptions'a taşımak için ihtiyacım olan tüm verileri almak için bir sorgu yaptım, ancak ara tabloyu doldurmakta sorun yaşıyorum
--Auxiliary tables
DECLARE @ReportOption TABLE (PracticeId int /*This field is not on the actual ReportOption table*/, field1, field2...)
DECLARE @PracticeReportOption TABLE (PracticeId int, ReportOptionId int, field1, field2)
--First I get all the data I need to move
INSERT INTO @ReportOption
SELECT P.practiceId, field1, field2...
FROM Practice P
--I insert it into the new table, but somehow I need to have the repation PracticeId / ReportOptionId
INSERT INTO ReportOption (field1, field2...)
OUTPUT @ReportOption.PracticeId, --> this is the field I don't know how to get
inserted.ReportOptionId
INTO @PracticeReportOption (PracticeId, ReportOptionId)
SELECT field1, field2
FROM @ReportOption
--This would insert the relationship, If I knew how to get it!
INSERT INTO @PracticeReportOption (PracticeId, ReportOptionId)
SELECT PracticeId, ReportOptionId
FROM @ReportOption
OUTPUT yan tümcesinde hedef tabloda olmayan bir alana başvurabilirsem, bu harika olurdu (sanırım yapamam, ama kesin olarak bilmiyorum). İhtiyacımı nasıl karşılayacağıma dair bir fikriniz var mı?
OUTPUT
. Dolayısıyla, ifadenizde belirli bir sütun için bir değer sağlamasanız bileINSERT
, bu sütunuOUTPUT
cümlecikte yine de belirtebilirsiniz . Bununla birlikte, diğer tablolardan SQL değişkenleri veya sütunları döndüremezsiniz.