Hola que tal, pues yo te recomendaria que la revision o validacion la hicieras en el fuente.
Primero revisas si existe el registro, si no existe lo insertas si ya existe lo actualizas.
IF NOT EXISTE( SELEC * FROM Tabla_X WHERE Nombre = 'X' )
BEGIN
INSERT INTO ....
END
ELSE
BEGIN
UPDATE.....
END
Se me hace que es mejor que se lo dejes a la BD por que por codigo, es un poco mas complicado a menos que lo manejes todo en variables globales y tengas que validar si cambio el valor de cada campo, pero si son varios campos es algo enfadoso.