Manejo de transacciones B.D. En WebService
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:
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, el problema es que si el servicio es invocado más de una vez al mismo tiempo, las transacciones se mezclan porque todas las invocaciones utilizan la misma conexión.
¿Cuál sería la manera correcta de manejar las transacciones?
1 Respuesta
Respuesta de roberboy 68
1