sql / expert
Snippet
Atomare Statussynchronisation mit der MERGE-Anweisung
Die MERGE-Anweisung bietet eine standardkonforme Möglichkeit, 'Upsert'-Operationen durchzuführen. Sie ermöglicht es einer einzigen SQL-Anweisung, basierend auf einer Join-Bedingung zu entscheiden, ob Daten aktualisiert oder eingefügt werden sollen. Dies gewährleistet Atomarität und reduziert den Bedarf an prozeduraler Logik oder mehreren Datenbankzugriffen.
snippet.sql
1
2
3
4
5
6
7
8
MERGE INTO inventory iUSING updates uON (i.product_id = u.product_id)WHEN MATCHED THENUPDATE SET i.stock = i.stock + u.changeWHEN NOT MATCHED THENINSERT (product_id, stock)VALUES (u.product_id, u.change);
Erklärung
1
MERGE INTO inventory i
Gibt die Zieltabelle an, die geändert werden soll.
2
USING updates u ON (i.product_id = u.product_id)
Definiert die Datenquelle und die Kriterien für den Abgleich der Datensätze.
3
WHEN MATCHED THEN UPDATE SET...
Definiert die Aktion, wenn der Datensatz bereits im Ziel vorhanden ist.
4
WHEN NOT MATCHED THEN INSERT...
Definiert die Aktion, wenn der Datensatz im Ziel fehlt.