2011-01-10 13 views
6

Hola
Voy a insertar 10 filas en un tiempo usando un TSQL que está disponible en el servidor SQL 2008. Quiero la IDENTIDAD de las filas insertadas. Creo que la solución más adelante trabajaría pero no estoy seguro de si alguna otra inserción ocurre mientras estoy corriendo la inserción anterior afectaría el resultadoObtener la identidad de la inserción múltiple en el servidor sql 2008

INSERT INTO tableA VALUES (1,2), (3,4), (4,5), ....
DECLARE @LastID INT = @@IDENTITY
SELECT TOP(10) ID FROM tableA WHERE ID<[email protected] ORDER BY ID DESC

Respuesta

14

Sólo tiene que utilizar el OUTPUT clause - que puede o bien de salida volver a la aplicación, o en una variable de tabla para seguir trabajando.

E.g. la consulta sería:

INSERT INTO tableA 
OUTPUT inserted.ID 
VALUES (1,2), (3,4), (4,5), ... 
15

Usted puede utilizar la cláusula OUTPUT:

DECLARE @tablevar table (ID int); 

INSERT INTO tableA 
OUTPUT INSERTED.ID INTO @tablevar 
VALUES (1,2), (3,4), (4,5), .... 
+0

maravillosa respuesta, exactamente lo que necesito, pero es posible evitar tabla temporal? – Ehsan

+1

@Ehsan - simplemente omita la porción 'INTO @ MyTableVar'. –

+0

@Ehsan: te sugiero que aceptes la respuesta de Damien. –

Cuestiones relacionadas