FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Transacciones anidadas en firebird
Hola,
Estoy desarrollando mi primera aplicación que usa firebird, normalmente he usado siempre ADO, pero ahora por necesidades de multiusuarios he tenido que cambiar. Estoy programando en D7, con IBX, Transacciones Read Committed y confirmación manual de las transacciones en los eventos AfterPost y afterCancel.Os explico el problemilla: Tengo dos tablas Master-Detail, aticulos (master) y tarifas_articulo (detail), las tablas se relacionan mediante el ID de artículos y el ID de la tabla tarifas_articulos es ID_ARTICULO, ID_TARIFA; Generando ID_TARIFA manualmente al insertarlo (valor máximo) por lo que debo hacer un commit al final de cada inserción para no obtener valores duplicados, y aquí es precisamente donde está mi problema: Si el usuario cancelara la inserción o modificación del artículo, únicamente podría hacer un rollback sobre la tabla articulos, pero no sobre la tabla tarifas_articulos. ¿Alguna sugerencia? Saludos Última edición por Er_Manué fecha: 07-12-2005 a las 13:22:43. |
#2
|
|||
|
|||
Problema
Disculpa, no se si puede ser una sugerencia o no, pero vos no podes en la tabla articulos ir realizando distintos Insert y Post, sin ningun Commit, de esta forma vos vas ingresando los datos pero sin la necesidad de un commit como para poder hacer un roolback. no se si esta podra ser una solucion pero era algo que se me ocurrio.
Saludos |
#3
|
|||
|
|||
hola Patricio, el problema es que si al ir insertando los datos en la tabla tarifas_articulos sin hacer commit al obtener el valor máximo de ID_TARIFA, sujeto a ID_ARTICULO sea el artículo que estamos añadiendo o modificando, siempre dá el valor del último registro confirmado con commit, con lo cual no me está obteniendo realmente el valor máximo.
Tampoco puedo usar un generado, ya que no pueden haber huecos en la numeración de las tarifas. saludos |
#4
|
|||
|
|||
uso de alguna variable auxiliar
Esto te puede servir?
vos antes de hacer el primer insert podes tomar el valor maximo y a partir de ahi con otra variable vas calculando el valor que realmente tendrias que ir agregando, si el valor maximo es 100, vos sabes con otra variable que el primer insert es 101 y asi sucesivamente No se si esto te sirva Saludos |
#5
|
|||
|
|||
pues es una opción válida lo que pasa que me gustaría saber si hay algún otro método mediante varias transaciones. Muchas gracias Patricio
|
#6
|
|||
|
|||
Hilo en foro
Transaciones IBX
fijate un hilo en el foro de interbase que vi recien y que capaz te sirve. Saludos |
|
|
|