Как рассчитывать на этот запрос - PullRequest
1 голос
/ 22 сентября 2011

Я делаю

INSERT INTO table1...  
   SELECT...  
   FROM table2

Однако мне нужно извлечь удостоверение из таблицы3 и вставить его непосредственно перед вставкой в ​​таблицу1.Эти две вставки должны происходить вместе, вставка table3 идет первой.Я пробовал что-то вроде этого:

INSERT INTO table1 (col1, col2, col3)  
   SELECT (  
      col1=(insert into table3(col1, col2)values(1,1) select SCOPE_IDENTITY(),   
      col2, col3)  
   FROM table2

Но это не работает.Для table1.col1 действительно необходимо значение идентификатора из новой вставки в table3.Количество данных для вставки, вероятно, не более нескольких 100 строк.Есть предложения?

1 Ответ

2 голосов
/ 22 сентября 2011

Похоже, что вы можете использовать Выходное предложение .

BEGIN TRANSACTION

DECLARE @MyResults table(col1 int, col2 int, col3 int);

INSERT INTO table3 (col1, col2)
    OUTPUT SCOPE_IDENTITY(), table2.col2, table2.col3 INTO @MyResults
SELECT 1, 1 FROM table2

INSERT INTO table1 (col1, col2, col3)
SELECT col1, col2, col3 FROM @MyResults

COMMIT
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...