SQLServer - 多對一更新 - 更新「多」時,行更新多次?

SQLServer - 多對一更新 - 更新「多」時,行更新多次?

我有一個庫存表和一個採購訂單表。 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,這是不正確的。我已更新觸發器,問題已解決。

相關內容