FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Problema en el uso de Transacciones
Tengo un problema con el uso de Transacciones en mi Aplicación, lo que pasa es que relación Maestro Detalle (Factura), mi problema se centra en que por cada Artículo que registran en la Factura automaticamente por medio de un trigger lo inserto en otra tabla de Saldos de Artículos, hasta aqui vamos bien, pero si en otra Pc intentan también Facturar el mismo artículo al mismo tiempo, me marca Error "Conflict on no wait deadlock transaction" este error es debido a que intentan accesar al mismo registro que es cuando el trigger quiere modificar el saldo de dicho artículo, el modo de aislamiento que uso en las transacciones es la siguiente:
read_committed rec_version nowait Uso los componentes IBX 6.08 con Delphi 6.0 y FireBird 1.52 Es una Aplicación de 2 Capas Cliente Servidor, este problema lo solucione con aplicar un CommitRetaining cada vez de que inserto un Artículo al Detalle de la Factura, pero me voy a enfrentar a otro problema que es cuando intentan a modificar una Factura que este Registrada, y si quieren modificar el Detalle de esta misma después que la modifiquen decide el usuario Cancelar Cambios, no me va a funcionar el RollBack porque se estará usando el commitretaining. Que estaré haciendo mal???? El Nivel de Aislamiento en las Transacciones es el correcto???? A Alguien ya le ha sucedido eso, y como lo resolvio???? Será que tengo que quitar el trigger y aplicar los Movimientos a la Tabla de Saldos al final de la captura de la Factura por medio de un Procedimiento Almacenado????? Que tenga buen día. |
|
|
|