He escrito un proceso almacenado que hará una actualización si existe un registro, de lo contrario, hará una inserción. Se ve algo como esto:Insertar proceso almacenado de actualización en SQL Server
update myTable set [email protected], [email protected] where [email protected]
if @@rowcount = 0
insert into myTable (Col1, Col2) values (@col1, @col2)
Mi lógica detrás de escribir de esta manera es que la actualización se realice una implícita seleccione mediante la cláusula dónde y si devuelve 0, entonces el inserto se llevará a cabo.
La alternativa para hacerlo de esta manera sería hacer una selección y luego, en función del número de filas devueltas, realice una actualización o inserte. Esto lo considero 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 lugar de la actualización). Si el proceso fuera a hacer una inserción, entonces 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?
Bueno, al menos respondió una pregunta, creo. Y no agregué el código porque el código en la pregunta ya me parecía correcto. Aunque lo pondría en una transacción, no tomé en cuenta el nivel de aislamiento para la actualización. ¡Gracias por señalar eso en tu respuesta! – binOr