SQL: If Exists Update Else Insert en Stored Procedures

Esta es una situación muy común cuando trabajamos constantemente con bases de datos. Yo trabajo a diario con procedimientos almacenados (Stored Procedures) en SQL Server, y me he encontrado muchas veces con un caso en concreto, y es que si un dato existe lo actualizamos, sino lo insertamos. En la documentación de MSDN y otras referencias nos solemos encontrar el siguiente ejemplo:

IF EXISTS (SELECT * FROM Table1 WHERE Column1='value')
UPDATE Table1 SET (...) WHERE Column1='value'
ELSE
INSERT INTO Table1 VALUES (...)

Pero, aunque es lo más fácil y lo primero que se nos ocurriría a cualquiera, existe una forma mas eficiente de hacerlo, sin tener que utilizar la búsqueda.
Después de hacer un update, @@ROWCOUNT tiene como valor el número de filas actualizadas, así que, una versión mas eficiente a la anterior sería:

UPDATE Table1 SET (...) WHERE Column1='value'
IF @@ROWCOUNT=0
INSERT INTO Table1 VALUES (...)
SQL: If Exists Update Else Insert en Stored Procedures SQL: If Exists Update Else Insert  en Stored Procedures Reviewed by Ricardo Castellanos on 10:43 Rating: 5

6 comentarios:

  1. Aunque el contenido de este blog me queda muy grande, pese a que bien me gustaría poder entender, pues estoy completamente atonita con el asunto 3d (poco a poco)he de decir que me siento encantada de conocer a alguien que se puso un el mismo nombre que yo aunque en diferentes idiomas ambos. Gracias por tu presencia en mi humilde blog y por supuesto Feliz Navidad y todo lo que venga.

    ResponderEliminar
  2. Hola!! bueno, blogueando ví las uñas y dije, voy a ver el blog del dios de los muertos y lo primero que me encuentro es un post de Juan Ferrandiz, así que te has ganado un seguidor...
    Una pregunta, porqué dices que tenemos el mismo nombre?
    Me alegro de que te hayas pasado por aquí, poco a poco iré poniendo trabajillos, por cierto, creo que lo próximo será un chacal en 3D ;D. Felíz navidad!!

    ResponderEliminar
  3. Hola! lo del nombre? creo que he mirado mal, en algún sitio antes de ver Zero ví "yo misma" despues de escribir el coment, seguí paseando por tu blog y ya ví que eras Zero, mi blog se llama Anubis y yo en nombre de perfil me puse Moi même, olvidalo pamplinas jajajjaja!
    Por cierto que pocas ilustraciones respectivas a Anubis y chacales, buenas, he visto en la red....
    Llevo un tiempo queriendo empezar a dibujar 3d, el 2d ya me aburre, pero no hago más que recopilar información de como empezar por mi cuenta y riesgo, ¿si no es molestia podrías aconsejarme un programa en español para principiantes? perdona por la molestia pero hay tanto y complicado que no se por donde empezar, si no es molestia, Un saludo afectuoso y mucha suerte y felicidad en este año 2010.

    ResponderEliminar
  4. jejeje, lo de Yo Misma es otro blog que sigo.
    En cuanto a ilustraciones de Anubis, que hay pocas? esta tarde tienes una en esta página.
    Para empezar, la verdad es que empezar siempre es dificil, con cualquier programa. Yo te recomiendo Blender, ya que, una vez que aprendes a manejarlo, es muy rápido de trabajar. Además es gratuito y pesa muy poco, y puedes conseguir resultados iguales que con los clásicos: 3D Studio, Maya, XSI... Aquí puedes encontrar una guía de iniciación muy buena: http://gafas3d.blogspot.com/2009/12/guia-de-iniciacion-blender-25.html
    Y si tienes alguna duda, pásate por aquí y me puedes preguntar cuanto quieras, además, ya iré poniendo algún manual que otro.
    Saludos! :D

    ResponderEliminar
  5. Buenas noches, para mi son las 2:17 madrugada en este moment. Me disponía a dar el ultimo repaso antes de acostarme y vine por ver si me habías contestado a lo del programa pues empiezo a sentir verdadera obsesión, viendo los resultados que se obtienen.
    En primer lugar mil gracias por la dedicatoria, nadie me hizo antes un regalo así,Fántastico Anubis 3d y especial, no tengo palabras, no me lo esperaba. Veo que tienes gran manejo del tema, gracias de nuevo me ha llegado al alma.
    Al respecto de lo del Blender seguiré tu consejo, he observado los resultados y me fascina, soy muy cabezota, tenaz y persistente, sé que conseguré manejarlo, siempre y cuando no sea en inglés pues no lo domino a tal extremo.
    mAÑANA MISMO ME LO CONSIGO.
    nO SE SI HÁS VISTO EN EL MARGEN DERECHO DE MI BLOG, EN LOS BLOGS QUE SIGO, HAY UNO QUE PUEDE INTERESARTE IGUAL YA LO VISTE, (bUF! ESTABA ESCRIBIENDO EN MAYusc. sin darme cuenta, no hay ganas de borrar y corregir discupa).El blog es http://miravirtual3d.blogspot.com/.Es bueno!
    De nuevo Gracias por el Anubis y por la amabilidad en ofrecerme ayuda, procuraré no fastidiar demasiado preguntando,Ahora si voy a dar el primer paso!!
    Ah! ¿me permitirías exponer el Anubis tuyo en mi blog con su respectiva referencia y denominación de origen?.
    Bien, hora de soltar el PC. Hasta la proxima.y gracias de nuevo.

    ResponderEliminar
  6. Ok, puedes poner la imagen donde quieras.
    miravirtual3d ya lo conocía, creo que llegué al tuyo gracias a ese blog.
    En cuanto a lo de tener Blender en español, sí se puede, aunque te vas a encontrar todos los manuales con Blender en inglés, mañana te enseño a cambiar el idioma (y ya de paso hago otro post) que hoy me dá un poco de pereza, son casi las 4 y mañana hay que trabajar... :C
    Y nada, si eres tan cabezota como dices, seguro que aprendes enseguida a hacerte tu Anubis, no tengas reparo en preguntar...
    Saludos!!

    ResponderEliminar

Con la tecnología de Blogger.