SQLServer - Atualização muitos para um - Ao atualizar 'muitos', as linhas são atualizadas várias vezes?

SQLServer - Atualização muitos para um - Ao atualizar 'muitos', as linhas são atualizadas várias vezes?

Eu tenho uma tabela de estoque e uma tabela PurchaseOrder. Estoque e Pedido de Compra são relações muitos para um. Um exemplo como abaixo.

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

Agora preciso de TaxedAmount = PO.TaxPrice * ST.Quantity Mas quando tento fazer isso, cada registro na tabela Stock foi atualizado duas vezes. Portanto, o TaxedAmount é sempre o mesmo.

UPDATE Stock
SET
    Stock.TaxedAmount = PurchaseOrder.TaxPrice * Stock.Quantity
FROM
    Stock, PurchaseOrder
WHERE
    Stock.POId = PurchaseOrder.POId
    AND Stock.ItemId = PurchaseOrder.ItemId

SQLServer retorna

2 registros afetados. 2 registros afetados.

A tabela é atualizada conforme abaixo, onde os TaxedAmounts são iguais.

Stock table  AS ST
POId  |  ItemId  |  Quantity  |  Amount  |  TaxedAmount
A     |  Pen     |  10        |  20      |  31.5
A     |  Pen     |  15        |  30      |  31.5

No entanto, os resultados esperados são:

Stock table  AS ST
POId  |  ItemId  |  Quantity  |  Amount  |  TaxedAmount
A     |  Pen     |  10        |  20      |  21
A     |  Pen     |  15        |  30      |  31.5

Alguma idéia de como devo fazer a atualização funcionar corretamente? Obrigado.

Responder1

A causa raiz foi identificada. Foi habilitado outro gatilho de atualização, que utiliza outra fonte para atualizar o TaxedAmount, o que está incorreto. Atualizei o gatilho e o problema foi resolvido.

informação relacionada