我有一個庫存表和一個採購訂單表。 Stock和PurchaseOrder是多對一的關係。示例如下。
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,這是不正確的。我已更新觸發器,問題已解決。