A veces se ocupa poder insertar filas que se traen de una estructura vieja y hemos definido con anterioridad una columna con un identity. En estas ocasiones se hace necesario deshabilitar el comportamiento del identity.
Para lograrlo tenemos que hacer lo siguiente.
- Ejecutar el comando [SET IDENTITY_INSERT dbo.MiTabla ON;]
- Ejecutar un insert into, en este caso hago enfasis en que es necesario enumerar el nombre de la columna tanto en el insert como en la seccion del select.
SET IDENTITY_INSERT dbo.MiTabla ON; GO Insert into MiTabla (ID, Col1, Col2) select ID, Col1, Col2 from MiTabla_old where id> 1000 GO SET IDENTITY_INSERT dbo.MiTabla OFF;
Es importante rescatar que cuando inserto estas nuevas filas el valor del identity se modificara a valor mas alto insertado.
Para validar el valor actual de la columna identity solamente necesitamos ejecutar el comando [DBCC CHECKIDENT], como se aprecia en el próximo ejemplo.
DBCC CHECKIDENT('MiTabla', NORESEED)