SQLServer – Viele-zu-eins-Update – Werden beim Aktualisieren der „Vielen“ Zeilen mehrfach aktualisiert?

SQLServer – Viele-zu-eins-Update – Werden beim Aktualisieren der „Vielen“ Zeilen mehrfach aktualisiert?

Ich habe eine Bestandstabelle und eine Bestelltabelle. Bestand und Bestelltabelle stehen in einer Viele-zu-eins-Beziehung. Ein Beispiel wie unten.

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

Jetzt brauche ich TaxedAmount = PO.TaxPrice * ST.Quantity. Aber wenn ich das versuche, wird jeder einzelne Datensatz in der Stock-Tabelle zweimal aktualisiert. Der TaxedAmount ist also immer derselbe.

UPDATE Stock
SET
    Stock.TaxedAmount = PurchaseOrder.TaxPrice * Stock.Quantity
FROM
    Stock, PurchaseOrder
WHERE
    Stock.POId = PurchaseOrder.POId
    AND Stock.ItemId = PurchaseOrder.ItemId

SQLServer gibt zurück

2 Datensätze betroffen. 2 Datensätze betroffen.

Die Tabelle wird wie unten aktualisiert, wobei die besteuerten Beträge gleich bleiben.

Stock table  AS ST
POId  |  ItemId  |  Quantity  |  Amount  |  TaxedAmount
A     |  Pen     |  10        |  20      |  31.5
A     |  Pen     |  15        |  30      |  31.5

Die erwarteten Ergebnisse sind jedoch:

Stock table  AS ST
POId  |  ItemId  |  Quantity  |  Amount  |  TaxedAmount
A     |  Pen     |  10        |  20      |  21
A     |  Pen     |  15        |  30      |  31.5

Irgendwelche Ideen, wie ich das Update richtig zum Laufen bringen kann? Danke.

Antwort1

Die Grundursache wurde identifiziert. Ein anderer Update-Trigger wurde aktiviert, der eine andere Quelle zum Aktualisieren des TaxedAmount verwendet, was falsch ist. Ich habe den Trigger aktualisiert und das Problem wurde behoben.

verwandte Informationen