sql >> Base de Datos >  >> RDS >> Sqlserver

¿Por qué hay espacios en blanco en los valores de mi columna IDENTIDAD?

La propiedad de identidad en una columna no garantiza lo siguiente :

Singularidad del valor – La exclusividad debe imponerse mediante una CLAVE PRINCIPAL o una restricción ÚNICA o un índice ÚNICO.

Valores consecutivos dentro de una transacción – No se garantiza que una transacción que inserte varias filas obtenga valores consecutivos para las filas porque pueden ocurrir otras inserciones simultáneas en la tabla. Si los valores deben ser consecutivos, la transacción debe usar un bloqueo exclusivo en la tabla o usar el nivel de aislamiento SERIALIZABLE.

Valores consecutivos después de reiniciar el servidor u otras fallas –SQL Server puede almacenar en caché los valores de identidad por motivos de rendimiento y algunos de los valores asignados pueden perderse durante un error de la base de datos o un reinicio del servidor. Esto puede dar lugar a lagunas en el valor de identidad tras la inserción. Si los espacios en blanco no son aceptables, la aplicación debe usar un generador de secuencias con la opción NOCACHE o usar su propio mecanismo para generar valores clave.

Reutilización de valores – Para una propiedad de identidad dada con semilla/incremento específico, el motor no reutiliza los valores de identidad. Si una declaración de inserción en particular falla o si la declaración de inserción se revierte, los valores de identidad consumidos se pierden y no se generarán nuevamente. Esto puede dar lugar a lagunas cuando se generan los valores de identidad posteriores.

También,

Si existe una columna de identidad para una tabla con eliminaciones frecuentes, pueden producirse espacios entre los valores de identidad. Si esto le preocupa, no utilice la propiedad IDENTITY. Sin embargo, para asegurarse de que no se han creado lagunas o para llenar una laguna existente , evalúe los valores de identidad existentes antes de ingresar explícitamente uno con SET IDENTITY_INSERT ON .

Además, verifique las Propiedades de la columna de identidad y verifique el valor de Incremento de identidad. Debería ser 1.