Deutsche SQL Server Konferenz  minimieren 

Deutsche SQL Server Konferenz


SQL Server 2008, Merge TSQL-Statement

Okt 28

Written by:
28.10.2007  RssIcon

Das neue MERGE Statement wird unter BI gelistet, hat aus meiner Sicht aber durchaus Vorteile bei "reinen" TSQL Anwendungen. Es läßt sich damit einfach in einem Statement eine Datensynchronisation zwischen einer Abfrage und einer Tabelle realisieren, wobei es definierbar ist, wann Daten geändert, eingefügt und gelöscht werden sollen. Im folgenden habe ich einmal ein kleines Beispiel dafür erstellt, in dem die einzelnen Teile per Kommentar erläutert sind:...

 

--  Ziel

MERGE dbo.ZielTab AS ziel

 

--  Quelle

USING (SELECT

             cast(ID_string AS int) AS ID

            ,rtrim(Bez) AS Bez

            ,Name1

            ,Name2

      FROM dbo.QuelleTab) AS quelle

 

--  Join Bedingung: Quelle mit Ziel

ON (quelle.ID = ziel.ID)                

 

-- Datenzeile ist in Quelle und Zeile enthalten

-- Es wird ein Update ausgeführt

WHEN MATCHED

    THEN UPDATE SET

             ziel.Bez   = quelle.Bez

            ,ziel.Name1 = quelle.Name1

            ,ziel.Name2 = quelle.Name2

 

-- Datenzeile ist in Quelle enthalten und im Ziel nicht

-- Es wird ein Insert in die Zieltabelle ausgeführt

WHEN TARGET NOT MATCHED

    THEN INSERT (

             ID

            ,Bez

            ,Name1

            ,Name2

      )

      VALUES (

             quelle.ID

            ,quelle.Bez

            ,quelle.Name1

            ,quelle.Name2

      )

 

-- Datenzeile ist in Quelle NICHT enthalten, jedoch im Ziel

-- Es wird ein Delete auf der Zieltabelle ausgeführt

WHEN SOURCE NOT MATCHED

    THEN DELETE

;

-- es müssen nicht alle WHEN-Zweige angegeben sein,

-- z. B. wenn man nicht Löschen muss, dann kann der Zweig entfallen

 

-- Weiterhin können zusätzliche Bedigungen angegeben werden,

-- ein Update soll nur ausgeführt werden, wenn z. B. eine Spalte

-- größer als ein bestimmter Wert ist

 

 

weiter geht es in Teil 2: http://www.sqlpass.de/Default.aspx?tabid=178&EntryID=36

Tags:
Categories:
Location: Blogs Parent Separator OPI's SQL Blog
Unser Newsletter  minimieren 

Unseren aktuellen Newsletter im PDF-Format gibt es hier zum Download:

 Das Newsletterarchiv ist im Mitgliedsbereich zugänglich.

 


 


Suche  minimieren