PostgreSQL - TRIGGER ...

 
Vista:

TRIGGER ...

Publicado por VIRGINIA (8 intervenciones) el 14/11/2008 20:29:58
BUENAS TARDES, HE HECHO UN TRIGGER QUE ME ACTUALICE LOS SALDOS DE UNA TABLA AL ACTUALIZAR EL ESTATUS DE UNA TABLA DEPENDIENTE, EL PROCESO DE SUMA DE SALDOS Y ACTUALIZACIÓN EN LA TABLA PRINCIPAL SE EFECTÚA CORRECTAMENTE, EL PROBLEMA ES QUE EL ESTATUS NO QUEDA CON EL VALOR, ES DECIR, ORIGINALMENTE EL STATUS ES 6, SE CAMBIA A 21, EFECTÚA LAS OPERACIONES EN LOS SALDOS Y LUEGO SE QUEDA EN 6 NUEVAMENTE...
EL TRIGGER ES ESTE:

BEGIN
IF TG_OP = 'INSERT' THEN
UPDATE obras.obr_paccion SET num_saldo = num_saldo - NEW.num_monto WHERE id_codigo = NEW.id_paccion;
RETURN NEW;
ELSE IF TG_OP = 'UPDATE' THEN
IF(NEW.id_status = 21) THEN
UPDATE obras.obr_pasigna SET num_reintegro = num_monto WHERE id_codigo = NEW.id_codigo;
UPDATE obras.obr_paccion SET num_saldo = (num_saldo + NEW.num_monto) WHERE id_codigo = NEW.id_paccion;
RETURN NEW;
END IF;
IF(OLD.id_paccion = NEW.id_paccion) THEN
IF(OLD.num_monto > NEW.num_monto) THEN
UPDATE obras.obr_paccion SET num_saldo = num_saldo + (OLD.num_monto - NEW.num_monto) WHERE id_codigo = NEW.id_paccion;
RETURN NEW;
ELSE
UPDATE obras.obr_paccion SET num_saldo = num_saldo - (NEW.num_monto - OLD.num_monto) WHERE id_codigo = NEW.id_paccion;
RETURN NEW;
END IF;
ELSE IF(OLD.id_paccion != NEW.id_paccion) THEN
UPDATE obras.obr_paccion SET num_saldo = num_saldo + OLD.num_monto WHERE id_codigo = OLD.id_paccion;
UPDATE obras.obr_paccion SET num_saldo = num_saldo - NEW.num_monto WHERE id_codigo = NEW.id_paccion;
RETURN NEW;
END IF;
END IF;
ELSE IF TG_OP = 'DELETE' THEN
UPDATE obras.obr_paccion SET num_saldo = num_saldo + OLD.num_monto WHERE id_codigo = OLD.id_paccion;
RETURN OLD;
END IF;
END IF;
END IF;
END;

ALGUIEN PUEDE DECIRME CUÁL ES EL ERROR Y CÓMO LO SOLUCIONO???? GRACIAS!!!!! :)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder