SQL Server IDENTITY_INSERT permite insertar valores explícitos en la columna de identidad de una tabla.
La instrucción IDENTITY_INSERT debe estar activada para insertar un valor explícito para la columna identity. Por defecto IDENTITY_INSERT está desactivado.
sintaxis
SET IDENTITY_INSERT schema_name . ] table_name { ON | OFF }
database_name
Es el nombre de la base de datos en la que existe la tabla especificada.
schema_name
Es el nombre del esquema al que pertenece la tabla.,
table_name
Es el nombre de una tabla con una columna de identidad.
veamos un ejemplo de SET IDENTITY_INSERT en SQL SERVER.
el siguiente ejemplo demuestra cómo IDENTITY_INSERT se usa para dar valor de identidad explícitamente para la columna de identidad.
creamos una tabla-X que tiene un ID de columna de identidad. Vamos a comprobar si tratamos de pasar un valor explícito para el ID de la columna de identidad.,
CREATE TABLE X (ID INT IDENTITY(1,1) ) ;INSERT INTO X (ID) VALUES (1);
Como vemos, da un error de un valor explícito para la columna de identidad en la tabla X Y también sugiere que si queremos insertar un valor explícito para la columna de identidad, IDENTITY_INSERT debe estar activado.
ahora intentamos ejecutar la instrucción above de nuevo después de establecer IDENTITY_INSERT en.
SET IDENTITY_INSERT dbo.X ONINSERT INTO X (ID) VALUES (1);SET IDENTITY_INSERT dbo.X OFF
Como vemos , el valor explícito para la columna de identidad se inserta en la tabla.,
en la instrucción anterior , debemos especificar la lista de columnas durante la inserción de lo contrario no permitirá un valor explícito para la columna de identidad y arrojará un error.
como vemos en la siguiente declaración incluso después de IDENTITY_INSERT ON, todavía da un error de valores explícitos para la columna de identidad ya que tenemos que especificar el nombre de la columna durante la inserción.