Sztuczka polega na tym, aby dodać WHERE do instrukcji INSERT, aby INSERT działało tylko wtedy, gdy element nie istnieje, a po nim następuje instrukcja SELECT. Przypuśćmy, że rekord można zidentyfikować za pomocą kolumny ID, którą należy wpisać:
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]
Nie musisz umieszczać wyciągów w transakcji, ponieważ każda instrukcja jest wykonywana w swojej własnej niejawnej transakcji. W związku z tym nie ma możliwości, aby dwie WSTAWKI odniosły sukces w tym samym czasie.
EDYTUJ :Składnia INSERT ... SELECT jest konieczna, ponieważ TSQL nie zezwala na części VALUES i WHERE w instrukcji INSERT.