2011-01-06 18 views
11

Tengo una tabla con un id autoincrement que estoy haciendo unlista Servidor SQL de las identidades de inserción

INSERT INTO (...) SELECT ... FROM ... 

¿Hay una manera para mí para obtener la lista de identificadores que se han insertado?

Estaba pensando que podría obtener el ID máximo antes del inserto y después y suponiendo que todo lo que hay en medio es nuevo, pero si una fila se inserta desde otro lugar podría tener problemas. ¿Hay una forma adecuada de hacer esto?

estoy usando SQL Server 2005

Respuesta

31

utilizar la cláusula output.

DECLARE @InsertedIDs table(ID int); 

INSERT INTO YourTable 
    OUTPUT INSERTED.ID 
     INTO @InsertedIDs 
    SELECT ... 
+0

¡Genial! ¿Se pregunta si hay formas de devolver este @InsertedIDs a C#? – Icerman

+0

increíble! esto me salvó de declarar un cursor! – Alex

3

crear una variable table y luego utilizar la cláusula OUTPUT en la variable table.

OUTPUT inserted.NameOfYourColumnId INTO tableVariable

A continuación, puede SELECT de la variable de table.

Cuestiones relacionadas