Buenas tardes.
Estoy desarrollando WebService REST ISAP en DelphiXE3 utilizando bases de datos SQL Server.
En el proceso del W.S., debo realizar varios pasos en una sola transacción y lo hago de la siguiente forma:
Código:
VAR
lTransactionDesc: TDBXTransaction;
...
// ** Inicio Transacción ** //
if not wsDataModule.SQLConnectionServer.InTransaction then
begin
wsDataModule.SQLConnectionServer.CloseDataSets;
lTransactionDesc := wsDataModule.SQLConnectionServer.BeginTransaction(TDBXIsolations.ReadCommitted);
end;
//Acá van todas las operaciones que debo hacer en mi transacción
// ** Finalizo transacción ** //
if wsDataModule.SQLConnectionServer.InTransaction then
wsDataModule.SQLConnectionServer.CommitFreeAndNil(lTransactionDesc);
La transacción la estoy creando sobre la conexión a mis datos (TSQLConnection), el problema es que si el servicio es invocado más de una vez al mismo tiempo, las transacciones se mezclan porque todas utilizan la misma conexión.
¿Cual sería la manera correcta de manejar las transacciones?