Cómo ver Identity_insert en SQL Server 2005
Generalmente, no es necesario configurar la columna que se incrementa automáticamente al insertar.
Esta configuración sólo es necesaria en circunstancias especiales.
1gt; CREAR TABLA test_create_tab2 (
2gt; id INT IDENTITY(1, 1) CLAVE PRIMARIA,
3gt; val VARCHAR(10)
4gt;
5gt; ir
1gt; INSERTAR EN test_create_tab2(val) VALORES ('SIN id'); go
(1 fila afectada)
1gt; INSERT INTO test_create_tab2(id, val) VALUES (6, 'id no use');
2gt; go
Mensaje 544, Nivel 16, Estado 1, Servidor HOME-BED592453C\SQLEXPRESS, Línea 1
No se puede crear un valor para la tabla 'test_create_tab2' cuando IDENTITY_INSERT está configurado en OFF Insertar un valor explícito en la columna de identidad.
1gt; INSERTAR EN test_create_tab2(val) VALORES ('A');
2gt; INSERTAR EN test_create_tab2(val) VALORES ('B'); >3gt; INSERTAR EN VALORES test_create_tab2 ('C');
4gt; INSERTAR EN VALORES test_create_tab2 ('D');
5gt; ; SELECCIONAR * DE test_create_tab2
2gt; ir
id val
----------- ------- ---
1 NO id
2 A
3 B
4 C
5 D
(5 filas afectadas)
--Elimina un dato, lo que provoca discontinuidad en los datos.
1gt; DELETE FROM test_create_tab2 WHERE id = 3;
2gt; go
(1 fila afectada)
--Permitir que se inserten valores explícitos en la columna de identidad de la tabla
1gt; SET IDENTITY_INSERT test_create_tab2 ON
2gt; go
1gt; INSERT INTO test_create_tab2(id, val) VALUES (3, 'id es uso'); >2gt; go
(1 fila afectada)
--No se permite la inserción de valores explícitos en la columna de identidad de la tabla
1gt; SET IDENTITY_INSERT test_create_tab2 OFF
p>2gt; go
1gt; SELECT * FROM test_create_tab2
2gt; /p>
-- --------- ----------
1 SIN id
2 A
Se utilizan 3 id
4 C
5 D
(5 filas afectadas)