De truc is om een WHERE aan je INSERT-statement toe te voegen, zodat INSERT alleen werkt als het item niet bestaat, gevolgd door het SELECT-statement. Stel dat het record kan worden geïdentificeerd door een ID-kolom, dan zou je schrijven:
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]
U hoeft de afschriften niet in een transactie te plaatsen, omdat elk afschrift in een eigen impliciete transactie wordt uitgevoerd. Het is dus onmogelijk dat twee INSERTS tegelijkertijd zullen slagen.
BEWERKEN :De INSERT ... SELECT-syntaxis is nodig omdat TSQL geen VALUES en een WHERE-gedeelte toestaat in de INSERT-instructie.