SQLServer - 다대일 업데이트 - '다'를 업데이트할 때 행이 여러 번 업데이트됩니까?

SQLServer - 다대일 업데이트 - '다'를 업데이트할 때 행이 여러 번 업데이트됩니까?

재고 테이블과 BuyOrder 테이블이 있습니다. Stock과 BuyOrder는 다대일 관계입니다. 예를 들면 다음과 같습니다.

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를 업데이트하는 또 다른 업데이트 트리거가 활성화되었습니다. 트리거를 업데이트했으며 문제가 해결되었습니다.

관련 정보