我已经对数据库进行了一些修改,并且需要将旧数据迁移到新表中。为此,我需要填充一个表(ReportOptions),该表从原始表(Practice)中获取数据,并填充第二个中间表(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...)
我进行了查询,以获取从练习到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子句上引用不在目标表上的字段,那将很棒(我认为我不能,但是我不确定)。关于如何满足我的需求的任何想法?
@marc_s感谢您的答复,但目标表中没有我需要的字段(我需要PracticeId,该字段不在ReportOption上)
—
Alejandro B.
OUTPUT
子句中返回插入行的表的任何列。因此,即使您没有为INSERT
语句中的给定列提供值,您仍然可以在OUTPUT
子句中指定该列。但是,您不能从其他表返回SQL变量或列。