У меня есть таблица stock и таблица PurchaseOrder. 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.
Таблица обновлена, как показано ниже, где суммы налогообложения остались прежними.
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, что неверно. Я обновил триггер, и проблема была решена.