Tengo una tabla con una columna IDENTIDAD. Mientras desarrollo, elimino las filas de vez en cuando y las agrego nuevamente. Pero los valores de IDENTIDAD siempre siguieron aumentando y no comenzaron desde 1 cuando los agregué nuevamente. Ahora mi identificación va de 68 -> 92 y esto bloquea mi código.
¿Cómo restablezco el valor IDENTITY?
Respuestas:
Puede restablecer el valor de identidad mediante
Entonces, la próxima vez que inserte en TableName, el valor de identidad insertado será 1.
Cuando elimina filas de la tabla, no restablecerá el valor de Identidad, pero seguirá incrementándolo. Justo como sucedió en tu caso.
Ahora, cuando trunca la tabla, restablecerá el valor de Identidad a su valor de Semilla original de la tabla.
Consulte: SERVIDOR SQL: BORRAR, TRUNCAR y RESEDIR identidad para obtener un ejemplo detallado y una buena explicación de la diferencia entre Truncar y Eliminar
fuente
Kin le ha mostrado cómo puede restablecer el valor de IDENTIDAD, pero fuera de un entorno de desarrollo cuando realmente está eliminando todos los datos, ¿por qué necesita hacer esto?
Espero que no tenga la intención de mantener una secuencia contigua de valores de IDENTIDAD cuando esté en producción. Y espero que realmente no esté escribiendo su código para codificar los valores de IDENTIDAD. Si estos son valores de ID significativos, entonces debe dejar de usar la propiedad IDENTITY.
Hay algunas cosas que evitarán que esto suceda:
no se solucionará hasta que SQL Server 2014nunca se repare (a menos que use un indicador de seguimiento indocumentado y muy costoso) por el cual un reinicio parecerá descartar hasta 1000 valores de su columna IDENTITY . El error en Connect sugiere que esto está restringido a eventos de conmutación por error que involucran grupos de disponibilidad, pero puedo asegurarle que el error es mucho más amplio que eso.En resumen, si le importan las lagunas o desea dar un significado específico a estos valores, deje de usar IDENTITY. Descarte y vuelva a crear la tabla y, cuando necesite eliminar los valores y volver a llenarlos, realice una actualización o realice una inserción con valores codificados para esa columna.
Por otro lado, la clave primaria y la identidad no son lo mismo. Una columna de identidad no es una clave principal a menos que la defina explícitamente como tal, y ciertamente puede tener una clave primaria que no sea una columna de identidad.
fuente
Si solo necesita eliminar las últimas filas que no han seguido el valor incremental de un campo de identidad, hay una manera fácil y segura:
y listo
fuente