L'astuce consiste à ajouter un WHERE à votre instruction INSERT afin que INSERT ne fonctionne que si l'élément n'existe pas, suivi de l'instruction SELECT. En supposant que l'enregistrement puisse être identifié par une colonne ID, vous écririez :
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]
Vous n'avez pas besoin de placer les instructions dans une transaction car chaque instruction est exécutée dans sa propre transaction implicite. Ainsi, il n'y a aucun moyen que deux INSERTS réussissent en même temps.
MODIFIER :La syntaxe INSERT ... SELECT est nécessaire car TSQL n'autorise pas les parties VALUES et WHERE dans l'instruction INSERT.