Ver Mensaje Individual
  #11  
Antiguo 26-09-2012
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Reputación: 21
AzidRain Va camino a la fama
Yo no uso FB, mas bien MYSQL pero supongo que es el mismo principio ya que no conozco bien los generadores de FB. En MySQL usamos un campo autoincrementado para llevar el control de las claves del registro maestro de manera que un pseudocódigo sería esto:

Código:
Abrimos la transaccion;
 Try 
   Poner la tabla maestra en mode insercion;
   Llenamos los datos de la maestra;
   Agregamos las filas que requiéramos en nuestra tabla detalle dejando en blanco con un valor conocido el campo que lo ligará a la maestra (yo uso -1 por ejemplo)
   Guardamos la maestra;
   Obtenemos el campo autoincrementado que se asignó al registro maestro;
   Sustituimos el campo correspondiente con ese valor en nuestras filas de detalle (que aun no se han guardado)
   Guardamos la tabla detalle (post);
   Aplicamos los cambios (commit)
 Except
   Hacemos un rollback si ocurre cualquier error
 end;
Al menos en MySQL el valor del campo autoincrementado es único por cada conexión y por cada transacción, de manera que nunca se repiten, lo más que llega a pasar es que ocurra un error y la transaccion se aborte por lo que el valor utilizado se pierde pero se garantiza que no lo obtenga cualquier otra conexión. Si no te preocupa dejar huecos en las claves primarias, es una buena solución y bastante sencilla.

En FB supongo que el generador hace lo mismo que el campo autoincrementado, ahí los expertos nos dirán.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita