Problema campo IDENTITY en Sybase

yomismo
30 de Noviembre del 2004
Tengo una tabla con un campo numérico definido como numeric(10) IDENTITY. Tras haber insertado 6000 registros, aproximadamente, el gestor de base de datos me ha empezado a generar valores para ese campo del orden de 5005000. Alguien sabe por qué? Se trata de algún bug de Sybase? Gracias

anonimo
30 de Noviembre del 2004
Mas bien es una configuracion de sybase, existe un parametro llamadado "identity burning set factor", este parametro define rangos de valores para asignar al campo identity. El servidor ubica el primer rango en memoria y en disco el siguiente rango a asignar, si por a, b o c motivo el rango de memoria se pierde toma el siguiente rango del disco y comienza a asignar esos valores. De ahi la brecha que tienes en las valores de tu campo.
La soulcion:
create table a ( a numeric(10,0) identity,
b int
)
with identity_gap = 1000
Esto hace que se generen bloques de 1000 numero, asi si ocurre un error tendras una brecha de 1000 numeros a lo más. Este valor lo puede modificar a tu gusto.