Tricket er at tilføje en WHERE til din INSERT-sætning, så INSERT kun virker, hvis elementet ikke findes, efterfulgt af SELECT-sætningen. Hvis du antager, at posten kan identificeres med en ID-kolonne, ville du skrive:
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]
Du behøver ikke at lægge erklæringerne i en transaktion, fordi hver erklæring udføres i sin egen implicitte transaktion. Der er således ingen måde, at to INSERTS vil lykkes på samme tid.
REDIGER :INSERT ... SELECT-syntaksen er nødvendig, fordi TSQL ikke tillader en VALUES og en WHERE-del i INSERT-sætningen.