El truco consiste en agregar un DONDE a su instrucción INSERT para que INSERT solo funcione si el elemento no existe, seguido de la instrucción SELECT. Suponiendo que el registro puede identificarse mediante una columna de ID, escribiría:
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]
No necesita poner las declaraciones en una transacción porque cada declaración se ejecuta en su propia transacción implícita. Por lo tanto, no hay forma de que dos INSERCIONES tengan éxito al mismo tiempo.
EDITAR :La sintaxis INSERT ... SELECT es necesaria porque TSQL no permite una parte VALUES y WHERE en la instrucción INSERT.