SQLServer - Actualización de muchos a uno - Al actualizar los 'muchos', ¿las filas se actualizan varias veces?

SQLServer - Actualización de muchos a uno - Al actualizar los 'muchos', ¿las filas se actualizan varias veces?

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ó.

información relacionada