salto de consecutivo en campo tipo identidad

19/07/2004 - 23:37 por cesar correa | Informe spam
Buenas tardes a todos, gracias por querer solucionar mi
problema! :-DDDD

Lo que pasa es que tengo una transaccion en asp para
ingresar unos datos en 3 tablas de la bd de sql server
2000.
se supone que si la transaccion falla, el rollback deja
todo como si nada, y eso funciona, hasta ahi todo va bien.
pero el consecutivo que iba a ser asignado por el motor de
sql queda inocupable, o sea se me salta el consecutivo que
seguia en la tabla.
por ejemplo voy en el consecutivo 123, al ingresar nueva
informacion sigue el consecutivo 124 y asi, pero si la
transacc. que iba a ocupar el consecutivo 125 falla por
algun error, hace rollback pero el consecutivo 125
queda "usado" y el motor continua en el 126 dejando el 125
inexistente, inaccesible o inusable.
a que se debe esto? hay alguna solucion?

muchas gracias!
 

Leer las respuestas

#1 Javier Loria
19/07/2004 - 23:57 | Informe spam
Hola Cesar:
El identity no es transaccional. Revisa el articulo:
http://www.configuracionesintegrale...p?articulo!9

En general es mala idea usar el Identity para columnas que quedan
expuestas a los usuarios, si necesitas un consecutivo puedes tratar con:
=SELECT COALESCE(MAX(ID),0)+1
FROM Tabla
= En mi caso prefiero las llaves naturales.
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
cesar correa escribio:
Buenas tardes a todos, gracias por querer solucionar mi
problema! :-DDDD

Lo que pasa es que tengo una transaccion en asp para
ingresar unos datos en 3 tablas de la bd de sql server
2000.
se supone que si la transaccion falla, el rollback deja
todo como si nada, y eso funciona, hasta ahi todo va bien.
pero el consecutivo que iba a ser asignado por el motor de
sql queda inocupable, o sea se me salta el consecutivo que
seguia en la tabla.
por ejemplo voy en el consecutivo 123, al ingresar nueva
informacion sigue el consecutivo 124 y asi, pero si la
transacc. que iba a ocupar el consecutivo 125 falla por
algun error, hace rollback pero el consecutivo 125
queda "usado" y el motor continua en el 126 dejando el 125
inexistente, inaccesible o inusable.
a que se debe esto? hay alguna solucion?

muchas gracias!

Preguntas similares