데이터베이스를 약간 수정했으며 이전 데이터를 새 테이블로 마이그레이션해야합니다. 이를 위해 원래 테이블 (Practice)에서 데이터를 가져 오는 테이블 (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 변수 또는 열을 리턴 할 수 없습니다.