SQLServer-多对一更新-更新“多”时,行会更新多次吗?

SQLServer-多对一更新-更新“多”时,行会更新多次吗?

我有一张库存表和一张采购订单表。库存和采购订单是多对一关系。示例如下。

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

现在我需要 TaxedAmount = PO.TaxPrice * ST.Quantity 但当我尝试这样做时,Stock 表中的每个记录都被更新了两次。因此 TaxedAmount 始终相同。

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

SQLServer 返回

2 条记录受到影响。 2 条记录受到影响。

表格更新如下,其中 TaxedAmounts 相同。

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

然而,预期的结果是:

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

有什么想法我应该如何让更新正常工作?谢谢。

答案1

已确定根本原因。已启用另一个更新触发器,该触发器使用另一个源来更新 TaxedAmount,这是不正确的。我已更新触发器,问题已解决。

相关内容