我有一张库存表和一张采购订单表。库存和采购订单是多对一关系。示例如下。
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,这是不正确的。我已更新触发器,问题已解决。