SQL – Activar / Desactivar columnas IDENTITY

Es posible que te hayas encontrado con la situación de que, trabajando con una base de datos de SQL Server, a una tabla concreta tengamos que hacerle un volcado de datos por una importación o algo semejante.

Al intentar hacer el INSERT nos damos cuenta de que el gestor de base de datos nos devuelve un error en donde nos indica que no se puede hacer el volcado de datos porque una de las columnas es de tipo IDENTITY.

Nuestra inserción de datos aporta a esa columna nuevos valores, pero, no han sido generados por la propia columna y tabla, por lo que el gestor SQL nos bloquea el script., un acto muy lógico por parte del sistema.

Aún así, nos interesa insertar esos valores por el motivo que sea, por lo que antes de poder hacerlo, debemos desactivar la propiedad IDENTITY y una vez terminada la tarea, volver a activarla. Para ello seguiremos los siguientes pasos:

Inhabilitar la la columna IDENTITY

SET IDENTITY_INSERT [server].[bbdd].[dbo].[table_name] ON
GO

Ejecutar la inserción de datos

/*Ejecutar aquí el proceso de volcado / insercción de datos en la tabla*/
INSERT INTO table_name(id, name)
SELECT AT.id, AT.nombre
FROM another_table AT
GO

Habilitar de nuevo la columna de Identidad

SET IDENTITY_INSERT [server].[bbdd].[dbo].[table_name] OFF
GO

De esta simple manera ya podemos añadir los nuevos registros de la tabla . Esta acción no es una buena práctica en el sentido de que si la columna identity está creada, es por algo y el hecho de que esos registros no existiesen, implica que algo se hizo mal. Pero a veces, el uso y gestión de los datos no depende de nosotros y hay cosas que hay que hacer a fuerza bruta.

Deja un comentario