usando transacciones firebird + firedac no visibles en otra session
Hola a Todos, mi problema es que los cambios ejecutados en la base de datos mediante transacciones no era visible a otros usuarios. Usando firebird 2.5 y firedac con delphi xe10 berlin
Enncontre una posible causa problema y solucion:
Firebird puede manejar transacciones anidadas. cuando se inicia el programa usando coneccion con firedac por omision es autocommit.
Normalmente colocamos :
transaccion.StartTransaction;
try
execute procedurex
commit
except
rollback
end
para evitar anidar la transaccion preguntemos
if DB_Firedac.InTransaction = false then
DB_Firedac.StartTransaction;
con esa intruccion evitamos anidar las transacciones
pero de otro forma nos tocaria dar 2 veces commit
para que los cambios sean visibles a otros usuarios
una forma de evitar que sucedandos transacciones anidadas seria:
DB_Firedac.TxOptions.EnableNested := False ;
esto nos generaria un error en ejecucion si tratamos de iniciar una transaccion anidada
|