Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Primary key, generador, interbase (https://www.clubdelphi.com/foros/showthread.php?t=2959)

rafadrover 14-08-2003 18:22:03

Primary key, generador, interbase
 
Hola a todos, tengo el problemilla de siempre, por que cuando se tiene una tabla, con la clave primaria asociada a un generador mediante un trigger, los datos no se reflejan el delphi si no se habre y cierra la tabla, no hay nadie que sepa como refrescar los datos que se han calculado en la base de datos sin tener que abrir y cerrar la tabla.

Gracias.

SCORDOBA 14-08-2003 18:40:20

Hola:

No puedes refrescar en el cliente por que no sabes el valor de la clave primaria que ha asignado el trigger. Para hacer esto puedes hacer dos cosas:

Opcion 1:
Te creas un procedimiento almacenado que te devuelva el id del generator, y lo ejecutas desde el cliente.

Opcion 2:
Si usas ibx o fib puedes ejecutar una funcion de la clase fibdatabase: Gen_id

TFIBDatabase.Gen_Id(const GeneratorName: string; Step: Integer): Integer;

Asi no tienes que refrescar nada.

Santiago

rafadrover 15-08-2003 10:11:43

El problema son los huecos que pueden aparecer en la numeracion, yo siempre soy mas partidario de dejar que las cosas las realize la base de datos, entonces es ella quien tiene que resolver el problema de los codigos. El problema es que al hacer esto, no me refresca los datos. Alguna idea?

kinobi 15-08-2003 11:44:24

Hola,

Cita:

Posteado originalmente por rafadrover
El problema son los huecos que pueden aparecer en la numeracion, ...
utilizando generadores no hay forma de evitar (en un entorno multi-transacción, o si prefieres, multi-usuario) la posibilidad de que puedan aparecer huecos en la secuencia. El asunto es indiferente a si se obtiene el siguiente valor del generador (GEN_ID(...)) desde el servidor (p.e. a través de un trigger) o por medio de una llamada a un procedimiento almacenado o consulta desde una aplicación cliente.

Saludos.


La franja horaria es GMT +2. Ahora son las 05:16:05.

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