Tengo dos tablas master-detail de forma que la primera contiene el total de
las lineas del detalle. Con la siguiente estructura :
Tabla Entregas : Cod, Total
Tabla Detalle : Cod, CodEntrega, TotalDetalle
De forma que cuando actualizo en la tabla detalle me actualice la cabecera.
tengo puesto el siguiente código en el desencadenado AFTER UPDATE
UPDATE Entregas SET Total = Total +
( SELECT SUM( Inserted.TotalDetalle) FROM Inserted INNER JOIN Entregas ON
Inserted.CodEntrega = Entregas.Cod WHERE Entregas.Cod =
Inserted.CodEntrega ) -
( SELECT SUM(Deleted.Total) FROM Deleted INNER JOIN Entregas ON
Deleted.CodEntrega = Entregas.Cod WHERE Entregas.Cod = Deleted.CodEntrega )
WHERE Entregas.Cod IN (SELECT CodEntrega FROM inserted)
Funciona Correctamente cuando hago modificaciones del detalle una a una. Y
funciona mal cuando hago por ejemplo modificaciones masivas de líneas de
detalle.
Por ejemplo si sumo a todas la línea 100 y tengo 5 líneas, todas las
cabeceras se incrementas en 500
Un saludo y Gracias de Antemano
Jaime Lloret.
Leer las respuestas