-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de UPDATE: tub_sga_actas_detalle -- BEFORE UPDATE -- Tabla: sga_actas_detalle -- Version: 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE OR REPLACE FUNCTION ftub_sga_actas_detalle () RETURNS trigger AS $BODY$ DECLARE _estado char(1); BEGIN -- No se permite modificar datos del detalle del acta si la misma esta Cerrada y/o Anulada SELECT estado INTO _estado FROM sga_actas WHERE id_acta = NEW.id_acta; -- Alumno, instancia, fecha, escala de notas, nota, resultado. IF (_estado = 'C' OR _estado = 'B') AND (OLD.alumno <> NEW.alumno OR OLD.instancia <> NEW.instancia OR OLD.escala_nota <> NEW.escala_nota OR OLD.nota <> NEW.nota OR OLD.resultado <> NEW.resultado OR OLD.fecha <> NEW.fecha) THEN IF _estado = 'C' THEN raise exception 'No se puede modificar datos del acta porque esta Cerrada'; ELSEIF _estado = 'B' THEN raise exception 'No se puede modificar datos del acta porque esta Anulada'; END IF ; END IF; RETURN NEW; END; $BODY$ LANGUAGE 'plpgsql'; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de UPDATE sobre sga_actas_detalle -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TRIGGER tub_sga_actas_detalle ON sga_actas_detalle RESTRICT; CREATE TRIGGER tub_sga_actas_detalle BEFORE UPDATE ON sga_actas_detalle FOR EACH ROW EXECUTE PROCEDURE ftub_sga_actas_detalle();