He escrito un proceso almacenado que hará una actualización si existe un registro, de lo contrario, hará una inserción. Se parece a esto:
update myTable set Col1=@col1, Col2=@col2 where ID=@ID
if @@rowcount = 0
insert into myTable (Col1, Col2) values (@col1, @col2)
Mi lógica detrás de escribirlo de esta manera es que la actualización realizará una selección implícita usando la cláusula where y si eso devuelve 0, entonces se llevará a cabo la inserción.
La alternativa a hacerlo de esta manera sería hacer una selección y luego, según el número de filas devueltas, hacer una actualización o una inserción. Esto lo consideré ineficiente porque si va a hacer una actualización, causará 2 selecciones (la primera llamada de selección explícita y la segunda implícita en el dónde de la actualización). Si el proceso hiciera un inserto, no habría diferencia en la eficiencia.
¿Mi lógica suena aquí? ¿Es así como combinaría una inserción y una actualización en un proceso almacenado?