Tôi đã thực hiện một số sửa đổi đối với cơ sở dữ liệu của mình và tôi cần di chuyển dữ liệu cũ sang các bảng mới. Để làm được điều đó, tôi cần điền vào một bảng (ReportOptions) lấy dữ liệu từ bảng gốc (Practice) và điền vào bảng trung gian thứ hai (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...)
Tôi đã thực hiện truy vấn để lấy tất cả dữ liệu tôi cần để chuyển từ Practice sang ReportOptions, nhưng tôi gặp sự cố khi điền vào bảng trung gian
--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
Nếu tôi có thể tham chiếu một trường không có trong bảng đích trong mệnh đề OUTPUT, thì điều đó thật tuyệt (tôi nghĩ là không thể, nhưng tôi không biết chắc). Bất kỳ ý tưởng về cách thực hiện nhu cầu của tôi?
OUTPUT
mệnh đề của bạn . Vì vậy, ngay cả khi bạn không cung cấp giá trị cho một cột nhất định trongINSERT
câu lệnh của mình , bạn vẫn có thể chỉ định cột đó trongOUTPUT
mệnh đề. Tuy nhiên, bạn không thể trả về các biến hoặc cột SQL từ các bảng khác.