INSERTAR una columna con IDENTITY establecido

Actualización de la página :
Fecha de creación de la página :

SQL Server tiene una propiedad "IDENTITY" que establece automáticamente el número secuencial de 1 a una columna específica cuando se agrega un registro. Por ejemplo, si establece IDENTITY en la columna A y agrega 3 registros, la columna A se rellena automáticamente con valores de 1, 2 y 3 en el orden en que los agregó.

Incluso si usa una instrucción INSERT, el valor se establece automáticamente, por lo que no es necesario establecer explícitamente el valor, pero creo que hay casos en los que desea establecer el valor explícitamente porque se usa para una clave externa, etc.

Como ejemplo, supongamos que hay una tabla con la propiedad "IDENTITY" establecida en la columna "ID" como se muestra en la figura.

Una instrucción INSERT que inserta un valor en esta tabla, incluida la columna ID, tendría el siguiente aspecto:

insert into [テーブル名] ([ID], [Value]) values (1, 1)

Sin embargo, cuando intento ejecutarlo, creo que aparecerá el siguiente error.

Msg 544, Nivel 16, Estado 1, Línea 1 Cuando IDENTITY_INSERT se establece en OFF, no se pueden insertar valores explícitos en la columna de identidad de la tabla 'XXXXX'.

Se supone que las columnas que se establecen originalmente en IDENTITY tienen valores establecidos automáticamente, por lo que no se pueden establecer explícitamente los valores.

Si realmente desea configurarlo, debe establecer "IDENTITY_INSERT" en "ON" como se describe en el mensaje de error. Gire IDENTITY_INSERT ON antes de INSERTING y vuelva a OFF cuando se complete la inserción, como en el siguiente SQL:

set identity_insert [テーブル名] on;
insert into [テーブル名] ([ID], [Value]) values (1, 1)
set identity_insert [テーブル名] off;

-- 確認
select * from [テーブル名];

Ahora puede establecer explícitamente el valor e INSERTARLO. INSERT-SELECT usando tablas también es válido.

Las columnas con IDENTITY se asignan automáticamente valores de 1, pero si establece explícitamente los valores como se describe anteriormente, es posible que se pregunte qué número se asignará a continuación. En este caso, el siguiente valor asignado se asigna desde el número después del valor agregado más alto a la tabla, por lo que no hay valor duplicado cuando se inserta un nuevo registro. (Sin embargo, hay excepciones debido a discapacidades, etc.)