SQL Server 2008: Schnelle Datenbankaktualisierung mit MERGE

Mit dem neuen MERGE-Befehl in SQL Server 2008 kann man Daten auf Basis bestimmter Join-Bedingungen mittels einer einzigen Anweisung einfügen, aktualisieren oder löschen. Der Artikel stellt die Funktionsweise der MERGE-Anweisung an einem einfachen Beispiel vor.

In den bisherigen Versionen von SQL Server muss man separate Anweisungen erzeugen, wenn in einer Tabelle, abhängig von den Bedingungen in einer anderen Tabelle, Daten eingefügt, aktualisiert oder gelöscht werden sollen. Mit MERGE lässt sich die Logik für diese Datenmanipulationen in einer einzigen Anweisung unterbringen.

Wie funktioniert MERGE?

Der MERGE-Befehl funktioniert im Grunde wie separate Insert-, Update- und Delete-Anweisungen in einem einzigen Befehl. Man gibt einen Quelldatensatz (Source) und eine Zieltabelle (Target) sowie die Join-Bedingung zwischen beiden an. Dann wird die Art der Datenmanipulation deklariert, die bei erfüllter oder nicht erfüllter Übereinstimmung (Match) zwischen den beiden Datensätzen ablaufen soll. MERGE ist besonders nützlich, wenn es darum geht, Datenlagertabellen zu laden, die sehr groß sind und je nach Zeilenzahl bestimmte Aktionen erfordern.

Ein einfaches Beispiel

Folgendes Beispiel simuliert Eingaben zu Verkäufen. Sie werden in eine Datenbank aufgenommen und dann in eine Berichtstabelle geladen, die die täglichen Verkaufsstatistiken aufzeichnet.

In einem klassischen Szenario würden die Datensätze zuerst in eine Staging-Tabelle (hier: Sales-Feed) geladen. Anschließend würde eine Reihe von Transformationen oder DDL-Anweisungen an der Berichtstabelle (hier: Sales-Archive) ausgeführt, um die täglichen Verkaufsdaten zu aktualisieren.

Mit der MERGE-Anweisung kann die Sales-Archive-Tabelle mittels einer einzigen Anweisung aktualisiert werden, anstatt verschiedene DDL-Anweisungen benutzen zu müssen. Da nur eine anstelle mehrerer Lookup-Operationen durchgeführt wird, lässt sich die Zeit verkürzen, die für die Aktualisierung notwendig ist.

Das folgende Script erzeugt die Tabellen Sales-Archive und Sales-Feed:

Mit dem nächsten Listing werden einige Daten in die Tabelle Sales-Feed geladen. Die Art, in der hier die Daten in die Tabelle eingefügt werden, ist neu in SQL Server 2008. Auf diese Weise lassen sich viele Werte spezifizieren, die dann über die VALUES-Klausel der INSERT-Anweisung eingefügt werden.

Fanden Sie diesen Artikel nützlich?
0 von 3 Lesern fanden diesen Artikel nützlich.

Aktuelle Job-Angebote

ZDNet.de Live

UL, ...

UL, Drexel University partner to establish research hub t.co/...

10.02.12, 22:15 von ZDNet
wow! ...

wow! ein wirklich schickes Android, das nicht Tablet-Größe hat: t.co/... ... leider nur mäßige technische Daten.

10.02.12, 21:25 von coke4all
Googl ...

Google arbeitet angeblich an Home Entertainment System mit Cloudanbindung t.co/...

10.02.12, 21:10 von zdnet_de
Why ...

Why are young Japanese men losing interest in sex? t.co/...

10.02.12, 20:55 von ZDNet
What ...

What AMD's new roadmap means for users t.co/...

10.02.12, 20:40 von ZDNet
Manch ...

Manchester City is expanding its online reach to Japan t.co/...

10.02.12, 20:35 von ZDNet
Fours ...

Foursquare evolving into one-stop shop with NFC support t.co/...

10.02.12, 20:35 von ZDNet
Websi ...

Website der Gelben Seiten baut Bewertungsfunktionen aus t.co/...

10.02.12, 20:30 von zdnet_de
Motor ...

Motorola: Android-Updates verzögern sich wegen der Hardware-Vielfalt t.co/...

10.02.12, 20:00 von zdnet_de
Aktie ...

Aktienkurse dort wo man sie am liebsten sieht: auf dem Mülleimer! t.co/...

10.02.12, 19:50 von coke4all
Faceb ...

Facebook details Zuckerberg's $500,000 salary, 45% bonus t.co/...

10.02.12, 19:45 von ZDNet
New ...

New Microsoft Office University product comes with tougher verification rules t.co/...

10.02.12, 19:35 von ZDNet
#Prad ...

#Prada Phone by #LG 3.0 ausgepackt und ausprobiert - #smartphone #android t.co/...

10.02.12, 19:30 von cnet_de
Schon ...

Schon im Test: Prada Phone by LG 3.0 mit Android und superhellem Display t.co/...

10.02.12, 19:30 von cnet_de
Beta ...

Beta von Chrome 18 erweitert Hardwarebeschleunigung t.co/...

10.02.12, 19:30 von zdnet_de
Sage ...

Sage helps chocolate business manage seasonality t.co/...

10.02.12, 19:20 von ZDNet
Colum ...

Columbia University excludes Google Docs t.co/...

10.02.12, 19:20 von ZDNet
Benq ...

Benq bringt XGA-Projektor mit 4000 ANSI-Lumen t.co/...

10.02.12, 19:00 von zdnet_de
Germa ...

Germany postpones ACTA signing in wake of protests t.co/...

10.02.12, 18:45 von ZDNet