SQLServer - Обновление «многие к одному» - При обновлении «многих» строки обновляются несколько раз?

SQLServer - Обновление «многие к одному» - При обновлении «многих» строки обновляются несколько раз?

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

Связанный контент