Номерът е да добавите WHERE към оператора INSERT, така че INSERT да работи само ако елементът не съществува, последван от оператора SELECT. Ако приемем, че записът може да бъде идентифициран чрез колона с идентификатор, вие бихте написали:
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]
Не е необходимо да поставяте операторите в транзакция, защото всеки оператор се изпълнява в собствена имплицитна транзакция. Следователно няма начин две INSERT да успеят едновременно.
РЕДАКТИРАНЕ :Синтаксисът INSERT ... SELECT е необходим, защото TSQL не позволява част VALUES и WHERE в оператора INSERT.