Bueno hoy algo sencillo pero que tambien podría ser útil para algún lector, como hacemos para verificar si el registro existe en la tabla, para actualizar o bien insertar como nuevo registro
Solución 1:
Si al hacer la consulta devuelve algún registro el EXIST devolvera TRUE
IF NOT EXISTS(SELECT ID FROM EMPLEADO WHERE ID = @ID)
INSERT INTO EMPLEADO (Nombre,Apellido, ID) VALUES (@_nombre,@_apellido ,@ID)
ELSE UPDATE EMPLEADO SET Nombre=@_nombre, Apellido=@_apellido WHERE ID = @ID
Nota: Talvez en procedimiento esta solución, es la mas común, pero esta haciendo un select, por lo tnato acarrea recursos o un par de milisegundos.
Solución 2:
Ahora utilizaremos una función del sistema para poder realizar lo mismo. @@ROWCOUNT
UPDATE TABLA SET Campo1 = @Valor WHERE ID = @ID
IF @@ROWCOUNT = 0
INSERT INTO TABLA (Campo1,ID) VALUES (@Valor,@ID)
Nota: Por defecto, mandamos la linea de actualización de registro, y con nuestra función verificamos si alguna fila o registro a sido afectado, caso que no haya afectado, insertamos el nuevo registro.
Aca un ejemplo usando @@ROWCOUNT y raiserror
UPDATE TOP(1) TU_CTA_CORRIENTE SET cIdAnt=cId, cId='D', dtfechaanulacion=GETDATE(), cUsuarioSis=@_usuario, cEquipoSis=@_equipo, cIPSis=@_ip, cMacNICSis=@_mac
WHERE ccodigoautogeneradopapeleta=@_papeleta
IF @@ROWCOUNT=0
begin
raiserror('No se ha actualizado ningun registro',16,1)
return
end
Otras soluciones podemos utilizar un BEGIN TRY , BEGIN CATCH, para la solucion 2 y tendriams otra lógica.
Hasta la próxima ...