Cómo llenar los huecos en columnas de identidad en SQL Server 2000

Índice de Contenido
  1. Cómo Solucionar Problemas de Gaps en Columnas de Identidad en SQL Server
    1. Crear una tabla con columna de identidad

Cómo Solucionar Problemas de Gaps en Columnas de Identidad en SQL Server

Aunque hayas explicado en repetidas ocasiones el valor de las columnas de identidad y la utilidad de sus valores arbitrarios, algunos de tus compañeros de trabajo insisten en utilizar PK secuenciales en una tabla determinada. Luego, cuando faltan números de facturas, entran en pánico temiendo litigios, fraude o algo peor.

Crear una tabla con columna de identidad

Para apreciar el problema, crea una tabla con una columna de identidad y rellénala con algunas filas:


CREATE TABLE TestIdentityGaps (
ID int IDENTITY PRIMARY KEY,
Description varchar(20)
)

GO

INSERT [INTO] TestIdentityGaps (Description) VALUES ('Uno')

INSERT [INTO] TestIdentityGaps (Description) VALUES ('Dos')

INSERT [INTO] TestIdentityGaps (Description) VALUES ('Tres')

INSERT [INTO] TestIdentityGaps (Description) VALUES ('Cuatro')

INSERT [INTO] TestIdentityGaps (Description) VALUES ('Cinco')

INSERT [INTO] TestIdentityGaps (Description) VALUES ('Seis')

GO

Ahora, borra algunas filas:


DELETE TestIdentityGaps WHERE Description IN ('Dos', 'Cinco')

Dado que escribimos el código, sabemos que los valores 'Dos' y 'Cinco' faltan. Queremos insertar dos filas para llenar estos espacios vacíos. Dos simples sentencias INSERT no resolverán el problema; en cambio, crearán PK al final de la secuencia.

Cómo instalar y configurar Sybase Adaptive Server Enterprise (ASE) en Linux


INSERT [INTO] TestIdentityGaps (Description) VALUES ('Dos Punto Uno')

INSERT [INTO] TestIdentityGaps (Description) VALUES ('Cinco Punto Uno')

GO

SELECT * FROM TestIdentityGaps

Tampoco puedes establecer explícitamente el valor de una columna de identidad:


INSERT INTO TestIdentityGaps (id, Description) VALUES(2, 'Dos Punto Uno')

GO

Como solución para este problema, SQL Server 2000 ofrece la opción IDENTITY_INSERT. Para forzar la inserción de una fila con un valor específico, emite el comando y luego procede con las inserciones específicas:


SET IDENTITY_INSERT TestIdentityGaps ON

INSERT INTO TestIdentityGaps (id, Description) VALUES(2, 'Dos Punto Uno')

INSERT INTO TestIdentityGaps (id, Description) VALUES(5, 'Cinco Punto Uno')

GO

SELECT * FROM TestIdentityGaps

Ahora puedes ver que las nuevas filas se han insertado utilizando las claves primarias especificadas.

Qué es sudo y por qué deberías usarlo

Nota

La configuración IDENTITY_INSERT se aplica a una tabla dentro de una base de datos en un momento determinado. Si necesitas rellenar espacios en más de una tabla, debes identificar explícitamente cada tabla con un comando específico.

También puedes insertar valores específicos en una tabla con una columna de identidad, pero para hacerlo, primero debes establecer el valor IDENTITY_INSERT en ON. Si no lo haces, recibirás un mensaje de error. Incluso si configuras IDENTITY_INSERT en ON y luego intentas insertar un valor existente, recibirás un mensaje de error.

El boletín gratuito sobre SQL Server de Newsmatic, que se entrega todos los martes, contiene consejos prácticos que te ayudarán a familiarizarte más con este potente sistema de gestión de bases de datos relacionales. ¡Suscríbete automáticamente hoy mismo!

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Gestión de datos, allí encontraras muchos artículos similares a Cómo llenar los huecos en columnas de identidad en SQL Server 2000 , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.