Ver Mensaje Individual
  #20  
Antiguo 18-10-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Reputación: 19
Chris Va por buen camino
Cita:
Empezado por rastafarey Ver Mensaje
desde delhpi has un select. select gen_id(gen_clientes, 1) from rdb$database
ese valo lo insertar en tabla base y si necesitas insertalo en otra tabla ya lo tienes.
Existe una posibilidad de introducir un bug al sistema al basarte del valor del generador para determinar el ID del registro recién agregado.

Supón el siguiente escenario:
Haces un inserción en la tabla facturas. El ID asignado a la nueva factura es #1,000. Sin embargo, por sinsustancias de la red u otro componente intermedio, hay un pequeño retraso en llegarle la notificación a tu aplicación de que la inserción fue exitosa. Mientras tu esperabas las respuesta del servidor, otro usuario factura y obtiene el número de factura siguiente. Al momento que tu aplicación ha recibido la respuesta y llama a gen_id, el valo devuelto será #1,002 y terminarás asociando productos a la factura que realmente no debiste hacerlo.

El escenario anterior es mucho más probable de suceder en relación al número de usuarios que requieren la funcionalidad con el bug que te acabo de describir. Si son diez usuarios que esporadicamente facturan será poco probable que suceda, pero lo hará. Todo lo que puede salir mal saldrá mal, eso no hay que olvidarlo.

Saludos,
Chris

EDITO: No me había fijado que habías sugerido utilizar "select gen_id(gen_clientes, 1)" para obtener un identificador único y luego utilizarlo para asignárselo a una nueva factura y sus detalles por ejemplo. De hecho esta es la solución adecuada para el problema. Es lo más seguro en términos de integridad de datos. Aunque te arriesgas a dejar números de facturas no consecutivos si ocurren errores posteriores. Pero eso no es tan grave como asociar productos a una factura a la que no van y dejar a otra sin descendencia.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web

Última edición por Chris fecha: 18-10-2011 a las 23:46:52.
Responder Con Cita