Identity

24/10/2003 - 00:46 por Pablo Fabian Savino | Informe spam
Hola,

bien, cuando el campo es Identity e inserto un registro, este
(sql server) asigna un numero, pero si yo borro un registro y luego inserto
uno nuevo, el identity salta, quiero decir, por ej:

inserto
identity=1
borro
where el identity=1
inserto
identity=2
Aqui esta la cuestion, hay manera que
siga el orden numerico sin saltarce numeros, debido que si borre el 1 y
luego inserto, quiero que sea 1 y no 2

hay manera de reordenar el identity? (por asi decirlo)


Saludos.

Preguntas similare

Leer las respuestas

#1 Isaías
24/10/2003 - 01:21 | Informe spam
Hola

La propiedad IDENTITY es un AUTONUMERICO, no es que
se "salte", simplemente, se borro el registro, por tanto,
el numerador seguira numerando en el siguiente (su caso,
el 3 a diferencia del que usted espera, 2).

Su peticion de RE-NUMERAR cada que se haga un DELETE, no
suena del todo logica ante un AUTONUMERICO, me paso a
explicar, en una aplicacion MULTI-USUARIO, suponiendo que
tenemos 250 usuarios y cada uno hace un DELETE de su
registro en cuestion, ¿Cual deberia ser la RE-NUMERACION?

Tal vez lo que usted necesita, es manejar un campo
NUMERICO, pero sin propiedad IDENTITY y "numerar" a "mano"
(por codigo).


DECLARE @MyUltimoNumero INT
SELECT @MyUltimoNumero = MAX(MyColNumerica)+1 FROM MyTabla

En este ejemplo, @MyUltimoNumero, tiene el ultimo numero +
1

Saludos.
Respuesta Responder a este mensaje
#2 Pablo Fabian Savino
24/10/2003 - 02:00 | Informe spam
Gracias por la explicacion, solo queria saber si existia la posibilidad,
pero esto no significaba que a cada delete lo hiba a renumerar, es que tener
por ejemplo un Identity = 584 cuando solo hay 2 registros en la tabla, me
parecia medio desequilibrado jejeje.

En cuestion del MAX que me mencionas, yo lo usaba, pero si tengo 4.000.000
de registros y sacar de ahi el MAX es muy engorroso a cambio de ganar
velocidad o dinamismoopte por poner en otra tabla de un solo
registro los consecutivos que uso.

Bueno...muchas gracias!!
Saludos Coordiales
Pablo



-
FIGHT BACK AGAINST SPAM!
Download Spam Inspector, the Award Winning Anti-Spam Filter
http://mail.giantcompany.com


"Isaías" wrote in message
news:04ce01c399bc$527693b0$
Hola

La propiedad IDENTITY es un AUTONUMERICO, no es que
se "salte", simplemente, se borro el registro, por tanto,
el numerador seguira numerando en el siguiente (su caso,
el 3 a diferencia del que usted espera, 2).

Su peticion de RE-NUMERAR cada que se haga un DELETE, no
suena del todo logica ante un AUTONUMERICO, me paso a
explicar, en una aplicacion MULTI-USUARIO, suponiendo que
tenemos 250 usuarios y cada uno hace un DELETE de su
registro en cuestion, ¿Cual deberia ser la RE-NUMERACION?

Tal vez lo que usted necesita, es manejar un campo
NUMERICO, pero sin propiedad IDENTITY y "numerar" a "mano"
(por codigo).


DECLARE @MyUltimoNumero INT
SELECT @MyUltimoNumero = MAX(MyColNumerica)+1 FROM MyTabla

En este ejemplo, @MyUltimoNumero, tiene el ultimo numero +
1

Saludos.
Respuesta Responder a este mensaje
#3 Isaías
24/10/2003 - 18:49 | Informe spam
Es otro solucion, tener el "foliador" (generador de
folios) en una tabla adicional, solo que hay que cuidar la
concurrencia cuando tienes muchos usuarios generando
folios, el BEGIN TRAN, es excelente para este caso.

Ahora bien, si tienes declarado un indice por el ID, no
importa que sean millones de registros, la velocidad para
obtener el MAX + 1 es aceptable.

Saludos
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida