SET IDENTITY_INSERT

Para poder hacer inserciones masivas en una tabla de SQL, si esta tabla tiene un campo de identidad (autonumérico), no nos dejará hacer el Insert.

La solución es utilizar la función SET IDENTITY_INSERT. El problema que podemos tener es que el INSERT INTO FROM necesita la lista de los campos y no vale con un * (asterisco).

Leer más “SET IDENTITY_INSERT”

Anuncios

Reseed

Cuando utilizo la función SET IDENTITY_INSERT para insertar registros en tablas con campos autonuméricos (identidad), estos campos autonuméricos pueden quedar mal.

Para establecer el siguiente número en el campo autonumérico utilizo la función DBCC CHECKIDENT:

DECLARE @maxVal INT
SELECT @maxVal = ISNULL(max(intuid),0)+1 from intu
DBCC CHECKIDENT('intu', RESEED, @maxVal)

Como podrás observar, primero guardo en una variable el valor máximo más 1 del campo autonumérico de la tabla y luego ejecuto la función DBCC CHECKIDENT utilizando RESEED indicando el número de la variable. Así, cuando hagamos un INSERT en la tabla, el campo autonumérico funcionará correctamente.