Tengo una tabla de stock y una tabla de Orden de compra. El stock y la orden de compra tienen una relación de muchos a uno. Un ejemplo como el siguiente.
Stock table AS ST
POId | ItemId | Quantity | Amount | TaxedAmount
A | Pen | 10 | 20 |
A | Pen | 15 | 30 |
PurchaseOrder table AS PO
POId | ItemId | Quantity | TaxPrice
A | Pen | 25 | 2.1
Ahora necesito TaxedAmount = PO.TaxPrice * ST.Quantity Pero cuando intento hacerlo, cada registro en la tabla Stock se actualizó dos veces. Entonces el Importe Impuesto es siempre el mismo.
UPDATE Stock
SET
Stock.TaxedAmount = PurchaseOrder.TaxPrice * Stock.Quantity
FROM
Stock, PurchaseOrder
WHERE
Stock.POId = PurchaseOrder.POId
AND Stock.ItemId = PurchaseOrder.ItemId
SQLServer regresa
2 registros afectados. 2 registros afectados.
La tabla se actualiza como se muestra a continuación, donde los Montos Gravados son los mismos.
Stock table AS ST
POId | ItemId | Quantity | Amount | TaxedAmount
A | Pen | 10 | 20 | 31.5
A | Pen | 15 | 30 | 31.5
Sin embargo, los resultados esperados son:
Stock table AS ST
POId | ItemId | Quantity | Amount | TaxedAmount
A | Pen | 10 | 20 | 21
A | Pen | 15 | 30 | 31.5
¿Alguna idea de cómo debería hacer que la actualización funcione correctamente? Gracias.
Respuesta1
Se ha identificado la causa raíz. Se habilitó otro activador de actualización, que utiliza otra fuente para actualizar TaxedAmount, lo cual es incorrecto. Actualicé el disparador y el problema se resolvió.