c# - inserted - ¿Hay alguna forma de usar SCOPE_IDENTITY si se usa una declaración de inserción múltiple?
c# entity framework get last inserted id (1)
No, SCOPE_IDENTITY()
solo le proporciona el último valor de IDENTITY
insertado. Pero puede consultar la cláusula OUTPUT
de SQL Server ...
DECLARE @IdentityTable TABLE (SomeKeyValue INT, NewIdentity INT)
INSERT INTO [MyTable]
OUTPUT Inserted.Keyvalue, Inserted.ID INTO @IdentityTable(SomeKeyValue, NewIdentity)
VALUES (''1''), (''2''), (''3'')
Una vez que haya ejecutado su INSERT
, la variable de la tabla mantendrá "algún valor clave" (para usted, para identificar la fila) y los valores de ID
recién insertados para cada fila insertada. ¡Ahora vuelve loco con esto! :-)
Importaré muchas filas de datos desde un archivo csv a una base de datos de SQL Server (a través de una aplicación web). Necesito el valor de ID generado automáticamente para el cliente.
Si hago esto en un bucle, el rendimiento es muy malo (pero puedo usar SCOPE_IDENTITY()
sin ningún problema).
Una solución más eficaz sería una forma como esta:
INSERT INTO [MyTable]
VALUES (''1''), (''2''), (''3'')
SELECT SCOPE_IDENTITY()
¿Hay alguna forma de obtener todos los ID generados y no solo el último ID generado?
¡Gracias por tu ayuda!
Saludos cordiales, Thorsten