Ver Mensaje Individual
  #9  
Antiguo 10-10-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Reputación: 28
jachguate Va por buen camino
Cita:
Empezado por Neftali
No si lo calculas a partir de Max (asegurándote de no provocar duplicados ni bloqueos); Siempre hablando del último -que es un caso especial-.
Yo me refería al borrado de un registro en cualquier parte de la tabla...
Cita:
Empezado por Neftali
Estoy de acuerdo contigo, pero lo que acabas de hacer es desplazar el problema. La clave primaria la calculas con un generador. OK; ¿Pero cómo calculas entonces el número de documento fiscal o contable? Es el mismo problema, pero pasado a otro campo.
No necesariamente es el mismo problema. Hay ocasiones en que el número de documento puede calcularse en el evento before insert, cuidando que las transacciones sean muy cortas para mejorar la concurrencia. Si se requiere de alta concurrencia sin problemas de bloqueos, regularmente yo me valgo de una tabla auxiliar en la que llevo en valor del correlativo, inserto el registro y hasta después de esto pongo un bloqueo sobre la tabla del correlativo, asigno el número de documento y hago commit. El bloqueo (que podría ser un update en falso) regularmente está dentro de un ciclo que reintentará un número configurable de veces y con un tiempo de espera también configurable entre reintentos, dandole chance al usuario de cancelar en cualquier momento, de manera que la asignación se realice al final de la transacción y soporte mas o menos los típicos problemas de concurrencia...

Si al final de cuentas no puede asignarse el número, el usuario siempre tiene el chance de dejar grabado el registro y volver luego para asignarle un número, con lo que tampoco perderá trabajo...

En fin, no hay un método perfecto, pero si hay mecanismos mas o menos sofisticados para atacar este asunto...

Saludos.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita