Il trucco consiste nell'aggiungere un WHERE all'istruzione INSERT in modo che INSERT funzioni solo se l'elemento non esiste, seguito dall'istruzione SELECT. Supponendo che il record possa essere identificato da una colonna ID, scriveresti:
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]
Non è necessario inserire le istruzioni in una transazione perché ogni istruzione viene eseguita nella propria transazione implicita. Pertanto, non è possibile che due INSERT riescano contemporaneamente.
MODIFICA :La sintassi INSERT ... SELECT è necessaria perché TSQL non consente una parte VALUES e una parte WHERE nell'istruzione INSERT.