Saludos, tengo un problema que no he encontrado como resolverlo de la forma
mas eficiente. Comparto esta información aquí, esperando alguien me puede
orientar.
Se usan transacciones, con VB6, ADO 2.7 y SQL Server 2000.
Se tiene una lista de elementos donde cada elemento describe un producto que
se necesita entregar a un destinatario. Por razones internas algunos de los
productos se dividen en "sub-productos" donde cada sub-producto se debe
considerar como si fuera un producto por separado. El numero máximo de
sub-productos es 35, el cal de vez en cuando se llega. Todos los datos de
todos los sub-productos se deben guardar correctamente, sino no se debe
guardar ninguno. La información de cada producto se guarda en 4 tablas:
Consolidación, Embarques, SueltoCab y SueltoDet. Normalmente el producto es
tal que solo es necesario guardarlo en Consolidación y Embarque. Es solo
cuando el producto consiste de piezas sueltas que es necesario documentarlo
en las tablas SueltosCab (Cabecera) y SueltosDet (Detalle). En todo caso,
cuando los datos se insertan en estas tablas (sean en las 2 o 4) es
necesario garantizar que se hayan escrito los datos correctamente a todas
las tablas. Si hay un error entonces se debe cancelar la inserción.
Actualmente se esta armando una secuencia de SQL y esta se envía al servidor
SQL Server. La secuencia es similar a esta:
Begin trans
Delete from Embarques where Campo=x
If @@error = 0
Insert into Embarques (Campos) values (datos)
If @@Error = 0
Delete from Consolidacion where Campo=x
If @@Error = 0
Insert into Consolidacion (Campos) values (datos)
If @@Error = 0
Commit Trans
Else
Rollback Trans
Else
Rollback Trans
Else
Rollback Trans
Else
Rollback trans
Mi pregunta es si esta es la mejor estrategia para realizar este proceso.
Gracias, Saga
Leer las respuestas