Si existe: actualizar; si no: insertar
Comparto con ustedes un tip sobre BD que encontré aqui
A menudo necesitamos actualizar un registro existente en una tabla o insertarlo en caso de no existir. La forma mas simple de hacerlo es:
IF EXISTS(SELECT * FROM MiTabla WHERE MiLlave = 10) THEN
UPDATE MiTabla SET MiCampo = 100 WHERE MiLlave = 10
ELSE
INSERT INTO MiTabla (MiLlave, MiCampo) VALUES (10,100)
Este script funciona, sin embargo no es la forma más óptima de realizar esta operación, pues el motor de la BD realiza dos búsquedas en la tabla. Una para el SELECT y otra para el Update.
Una mejor forma de hacer esta operación es:
UPDATE MiTabla SET MiCampo = 100 WHERE MiLlave = 10
IF @@ROWCOUNT = 0 THEN
INSERT INTO MiTabla (MiLlave, MiCampo) VALUES (10,100)
Asi le ahorramos un poco de trabajo a nuestro servidor.
Saludos
3 comentarios:
Excelente inf
Gracias
Gracias a tí por visitar el blog y dejar tu comentario.
Saludos
todo bien pero en sql no me funciona a no ser que borre el "THEN", sin eso funciona perfecto.
Publicar un comentario