miércoles, 18 de noviembre de 2009

Identity

En una migración de MS SQL Server me encontré con algunas tablas que tienen PK con un identity por lo que es necesario bloquear esta propiedad antes de hacer un insert masivo con PK definidos con anterioridad. Para ello es necesario ejecutar el script con las siguientes instrucciones:


--saca identity de la tabla
set identity_insert sifaComuna on

insert into sifaComuna
(idComuna
,idRegion
,nombreComuna)
select cd_comuna
,cd_region
,nm_comuna
from db_SNP_RNASQL.dbo.tb_comuna

--vuelve a poner identity en la tabla
set identity_insert sifaComuna off
Posterior a este insert masivo, el campo con identity quedará seteado para ser insertado con el valor que viene a continuación de acuerdo con el mayor valor ingresado y el incremento definido para el identity.

perdí la URL desde donde saqué esto.

2 comentarios:

Tito dijo...

también puede servir esto, si se quiere restablecer el identity de la tabla:

DBCC CHECKIDENT (, RESEED,0)

Fuente:
http://www.devjoker.com/contenidos/Administraci%C3%B3n/290/Reiniciar-un-campo-identity-en-SQL-Server.aspx

Tito dijo...

DBCC CHECKIDENT ([nombre_tabla}], RESEED,0)