I have two tables, Table_1
and Table_2
.
Table_1
has columns PK
(autoincrementing int
) and Value
(nchar(10)
).
Table_2
has FK
(int
), Key
(nchar(10)
) and Value
(nchar(10)
).
That is to say, Table_1
is a table of data and Table_2
is a key-value store where one row in Table_1
may correspond to 0, 1 or more keys and values in Table_2
.
I'd like to write code that programmatically builds up a query that inserts one row into Table_1
and a variable number of rows into Table_2
using the primary key from Table_1
.
I can do it easy with one row:
INSERT INTO Table_1 ([Value])
OUTPUT INSERTED.PK, 'Test1Key', 'Test1Val' INTO Table_2 (FK, [Key], [Value])
VALUES ('Test')
But SQL doesn't seem to like the idea of having multiple rows. This fails:
INSERT INTO Table_1 ([Value])
OUTPUT INSERTED.PK, 'Test1Key', 'Test1Val' INTO Table_2 (FK, [Key], [Value])
OUTPUT INSERTED.PK, 'Test2Key', 'Test2Val' INTO Table_2 (FK, [Key], [Value])
OUTPUT INSERTED.PK, 'Test3Key', 'Test3Val' INTO Table_2 (FK, [Key], [Value])
VALUES ('Test')
Is there any way to make this work?
OUTPUT
clause - you can output multiple rows into e.g. a temporary table (or a table variable - or directly into a target table, too!) – Strade