Ваш вопрос не совсем ясен о том, в чем конкретно заключается проблема. Я вижу три возможности:
1. Вы хотите вставить в две таблицы один оператор INSERT
2. Вы хотите сделать две вставки, но без чего-либо еще «в середине»
3. Вы хотите вставить в одну таблицу, а затем получить первичный ключ для вставки во вторую таблицу
Ответ на 1. прост:
You can't.
Ответ на вопрос 2. тоже прост:
BEGIN TRANSACTION
INSERT INTO <table1> (a,b,c) VALUES (1,2,3)
INSERT INTO <table2> (a,b,c) VALUES (1,2,3)
COMMIT TRANSACTION
Ответ на вопрос 3. имеет несколько возможностей. Каждый в зависимости от того, что именно вы хотите сделать. Скорее всего, вы хотите использовать SCOPE_IDENTITY () , но вы также можете поискать @@ identity и IDENT_CURRENT () , чтобы понять различные варианты и сложности .
BEGIN TRANSACTION
INSERT INTO <dimension_table> (name)
VALUES ('my new item')
INSERT INTO <fact_table> (item_id, iteam_value)
VALUES (SCOPE_IDENTITY(), 1)
COMMIT TRANSACTION