Я вніс деякі зміни в свою базу даних, і мені потрібно перемістити старі дані до нових таблиць. Для цього мені потрібно заповнити таблицю (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, це було б чудово (я думаю, що не можу, але не знаю точно). Будь-які ідеї, як здійснити мою потребу?
OUTPUT
пункті. Тож навіть якщо ви не вказали значення для вказаного стовпця у своємуINSERT
виписці, ви все одно можете вказати цей стовпець уOUTPUT
пункті. Однак ви не можете повертати змінні SQL або стовпці з інших таблиць.