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