Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #9  
Antiguo 10-10-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
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
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿como pasarle a un insert el valor del inputbox? Nelly Varios 1 18-01-2006 23:36:39
como hacer que una columna del dbgrid contenga un valor de un TEdit en cada celda Shidalis OOP 2 02-08-2005 12:05:35
Distinto valor de retorno en storedprocedure desde delfi y desde consola sql manolop Firebird e Interbase 4 20-07-2005 17:24:52
DBGrid. Como puedo mandar cada celda a un form distinto? gontxalo OOP 4 15-07-2005 19:41:25
Escribir 3 copias de una factura poniendo texto distinto en cada copia pacope Impresión 5 26-01-2004 08:42:47


La franja horaria es GMT +2. Ahora son las 22:41:27.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi