Uso de cursores y modificaciones a la Base de Datos

Buenas, tengo una consulta respecto al uso de cursores y sincronizaciones que me gustaría me orienten.
El caso es el siguiente, tengo una tabla maestra llamada “Ficha”, la cual está vinculada con otra tabla llamada “historial”.
Al seleccionar un registro de Ficha, recupero en un cursor todos los movimientos relacionados del la tabla Historial, ahora bien, el form de Historial tiene un evento Agregar, el cual como su nombre lo indica inserta un nueva fila en dicho recordset pero la función que maneja este evento tiene a su vez una llamada a otra función externa de validación, la cual, en el caso de no haber inconvenientes realiza UPDATEs en una tercer tabla (no vinculada en el componente datos_relación por lo cual se puede llegar a dar que modifique la BD al hacer un update en la Tercer Tabla pero que la tabla Historial nunca sufra cambios si por algún motivo omito la ejecución del evento Guardar en la ficha que dispararía Sincronizar con lo cual tengo una inconsistencia.
No se si logro explicarme, pero si se entendió les agradecería la orientación a una solución.
Gracias.

Hola Nicolas,

ese update que generas en la tercer tabla, no se puede hacer mediante un trigger en la tabla historial?.. es una opcion que se me ocurre.

La otra opcion, seria que aguantes el update hasta el momento de hacer el guardado, en ese caso lo que te quedaria seria:

  • Apertura manual de una transaccion
  • Sincronizacion de la relacion
  • Realizacion de los updates
  • Cierre o Rollback de la transaccion

En cuyo caso no te quedaria inconsistente, como por defecto la relacion trabaja con una transaccion y en postgres estas no se pueden anidar, vas a tener que desactivarsela mediante esto, fijate que no se hace directamente sobre la relacion, sino sobre el administrador de persistencia.

Lo unico raro de este ultimo esquema, es que no se que tan relacionados esten los registros de la tabla historial con la tercer tabla y si se puedan serializar de dicha forma.

Saludos

Muchas gracias por la respuesta, posiblemente opte por esta última opción. Las modificaciones en la tercer tabla se pueden realizar o no en función del resultado de unas validaciones previas.