Campo tipo identity

11/02/2004 - 17:02 por Ricardo | Informe spam
Hola, hay alguna forma de evitar que el campo identiy se incremente cuando
no se pudo crear el registro por clave duplicada
Gracias
Saludos

Preguntas similare

Leer las respuestas

#1 ulises
11/02/2004 - 17:26 | Informe spam
Tengo entendido que no, ese es uno de los problemas de ese
atributo, lo puedes verificar ejecutando varios INSERT a
una tabla con un campo de atributo identity en una
transacción, si das ROLLBACK a esa transacción verás que
el campo identity no se actualizó con el ROLLBACK.

Saludos,
Ulises

Hola, hay alguna forma de evitar que el campo identiy se


incremente cuando
no se pudo crear el registro por clave duplicada
Gracias
Saludos
Respuesta Responder a este mensaje
#2 Javier Loria
11/02/2004 - 18:09 | Informe spam
Hola Ricardo:
El Identity, no participa en transacciones, cuando algo sale mal, queda
siempre incrementado.
Si te importa el valor que se asigna en el Identity, es probable que no
debas usarlo :(
Si lo que quieres es conseguir un numero consecutivo, pero que sea "visible"
a la aplicacion y a los usuarios y donde el valor asignado es "importante",
probablemente lo mejor es elimines el Identity y asignes los valores usando
algo como:
SELECT COALESCE(MAX(ID),0)+1 FROM Tabla
O la alternativa que es usar una Tabla donde este el numero del siguiente
numero, le sumes 1, y lo uses para el INSERT.

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.
Ricardo escribio:
Hola, hay alguna forma de evitar que el campo identiy se incremente
cuando no se pudo crear el registro por clave duplicada
Gracias
Saludos
Respuesta Responder a este mensaje
#3 Edgar Cuevas
12/02/2004 - 01:01 | Informe spam
No hay forma de hacer lo que tu necesitas, mas sin en
cambios puedes cambiar el valor del campo autonumerico
del registro nuevo, esto lo haces con:

SET IDENTITY_INSERT OFF
.
.
Haces tus cambios, sobre la tabla autonumerica(puedes
incluso borrar el registro nuevo, luego al
numero/registro mas grande "asignarle el mismo", esto
hace que el id retome el numero reemplazado como
nuevo, "ojo" Esto sucede si es el mayor)
.
SET IDENTITY_INSERT ON

Retoma la ayuda de este comando, para que aclares un poco
el uso de esta funcion
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida