Ask a Question
Ask Question Login
Corporate Training
  1. Community
  2. SQL Server
  3. Question
SQL Server

How to Insert multiple rows into a table using an IDENTITY column ?

Asked by Cameron Oliver Apr 23, 2021 11 views 1 answer
Share

About this question

I have a table called dbo.Groups defined like this:

CREATE TABLE dbo.Groups ( GroupID int NOT NULL IDENTITY (1,1) PRIMARY KEY ); The table really consists of just the one IDENTITY column. Sometimes I want to insert into it multiple rows at once and get the generated IDs. (I already have a pre-defined table variable called @output with a single ID column to be used in the OUTPUT clause.) Now I know how I would proceed if it was a single row: INSERT INTO dbo.GroupID OUTPUT inserted.GroupID INTO @output (ID) DEFAULT VALUES ;


But I want to be able to insert two or more in one go. The actual number is determined by the number of rows returned by this query: * FROM dbo.MySource ; So if the query returns one row, I want to insert one row into dbo.Groups and return the generated GroupID. If it is a hundred rows, then I would expect a hundred rows inserted and a hundred IDs generated and returned at once. One obvious method is to insert one row at a time in a loop. I would like to avoid that and use a set-based approach instead, something along the lines of INSERT INTO dbo.GroupID OUTPUT inserted.GroupID INTO @output (ID) SELECT ... -- what? FROM dbo.MySource ;

Is there a way to insert multiple rows into a table with just an IDENTITY column in (preferably) a single statement?

Your answer

1 Answer

More SQL Server discussions

Learn & Explore

Free tutorials and interview questions from industry experts — learn the skill, then get ready to prove it.

Latest SQL Server Blogs

Guides, tips and career advice on SQL Server from JanBask experts.