Der Trick besteht darin, Ihrer INSERT-Anweisung ein WHERE hinzuzufügen, sodass INSERT nur funktioniert, wenn das Element nicht existiert, gefolgt von der SELECT-Anweisung. Angenommen, der Datensatz kann durch eine ID-Spalte identifiziert werden, würden Sie schreiben:
INSERT INTO MyTable (ID,Col1,Col2,...)
SELECT @IDValue,@Col1Value,@Col2Value, ...
WHERE NOT EXISTS (SELECT ID
FROM MyTable
WHERE [email protected])
SELECT *
FROM MyTable
Where [email protected]
Sie müssen die Anweisungen nicht in eine Transaktion einfügen, da jede Anweisung in einer eigenen impliziten Transaktion ausgeführt wird. Daher ist es unmöglich, dass zwei INSERTS gleichzeitig erfolgreich sind.
BEARBEITEN Hinweis:Die INSERT ... SELECT-Syntax ist erforderlich, da TSQL keinen VALUES- und WHERE-Teil in der INSERT-Anweisung zulässt.