Will man einen Datensatz in eine Tabelle einfügen falls er noch nicht existiert, behilft man sich normalerweise mit einem NOT EXISTS(...) Statement. Eleganter - und vor allem threadsafe mit einem atomaren Statement - geht es mit dem MERGE Befehl.

Hier ein Beispiel anhand einer Tabelle Table1 mit Primary-Key Id und den Spalten Name und Wert:

MERGE INTO
  Table1 WITH (HOLDLOCK) t 
USING
  (VALUES (1, 'test', 6)) s([Id], [Name], [Wert])
ON
  t.[Id] = s.[Id]
WHEN NOT MATCHED THEN
  INSERT ([Id], [Name], [Wert]) VALUES (s.[Id], s.[Name], s.[Wert]);

Kommentare

Schreibe den ersten Kommentar!

Kommentar schreiben