INSERT wenn nicht vorhanden
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
Kommentare sind geschlossen.