ฉันได้ทำการแก้ไขฐานข้อมูลบางอย่างและจำเป็นต้องย้ายข้อมูลเก่าไปยังตารางใหม่ สำหรับสิ่งนั้นฉันต้องกรอกข้อมูลในตาราง (ReportOptions) โดยนำข้อมูลจากตารางเดิม (แบบฝึกหัด) และเติมตารางกลางที่สอง (PracticeReportOption)
ReportOption (ReportOptionId int PK, field1, field2...)
Practice (PracticeId int PK, field1, field2...)
PracticeReportOption (PracticeReportOptionId int PK, PracticeId int FK, ReportOptionId int FK, field1, field2...)
ฉันทำแบบสอบถามเพื่อรับข้อมูลทั้งหมดที่จำเป็นในการย้ายจาก Practice ไปยัง ReportOptions แต่ฉันมีปัญหาในการกรอกตารางกลาง
--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 นั่นจะดีมาก (ฉันคิดว่าทำไม่ได้ แต่ฉันไม่รู้แน่ชัด) ความคิดใด ๆ เกี่ยวกับวิธีการบรรลุความต้องการของฉัน?
OUTPUT
อนุประโยคของคุณ ดังนั้นแม้ว่าคุณจะไม่ได้ระบุค่าสำหรับคอลัมน์ใดคอลัมน์หนึ่งในINSERT
คำสั่งของคุณคุณก็ยังสามารถระบุคอลัมน์นั้นในOUTPUT
อนุประโยคได้ อย่างไรก็ตามคุณไม่สามารถส่งคืนตัวแปรหรือคอลัมน์ SQL จากตารางอื่นได้