4thSpace
4thSpace

Reputation: 44312

How to get count on ths query

I'm doing an

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

However, I need to retrieve the identity from a table3 and do an insert into it just before inserting into table1. These two inserts need to occur together, with table3 insert going first. I've tried something like this:

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

But that doesn't work. table1.col1 does need the identity value from the new insert into table3. Amount of data to insert probably no more than a few 100 rows. Any suggestions?

Upvotes: 1

Views: 95

Answers (1)

kevev22
kevev22

Reputation: 3775

It looks like you might be able to use the Output Clause.

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

Upvotes: 2

Related Questions