-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de UPDATE: tub_sga_actas -- BEFORE UPDATE -- Tabla: sga_actas -- Version: 3.0.0 -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CREATE OR REPLACE FUNCTION ftub_sga_actas () RETURNS trigger AS $BODY$ DECLARE BEGIN -- No se permite modificar datos de la cabecera del acta si la misma esta Cerrada y/o Anulada IF (OLD.estado = 'C' OR OLD.estado = 'B') AND OLD.estado = NEW.estado THEN IF (OLD.nro_acta <> NEW.nro_acta OR OLD.libro <> NEW.libro OR OLD.origen <> NEW.origen OR OLD.tipo_acta <> NEW.tipo_acta OR OLD.evaluacion <> NEW.evaluacion OR OLD.comision <> NEW.comision OR OLD.llamado_mesa <> NEW.llamado_mesa OR OLD.renglones_folio <> NEW.renglones_folio OR OLD.acta_referencia <> NEW.acta_referencia OR OLD.fecha_generacion <> NEW.fecha_generacion OR OLD.fecha_cierre <> NEW.fecha_cierre OR OLD.fecha_anulacion <> NEW.fecha_anulacion OR OLD.nua <> NEW.nua OR OLD.documento <> NEW.documento OR OLD.libro <> NEW.libro OR OLD.version <> NEW.version OR OLD.version_impresa <> NEW.version_impresa OR OLD.nro_ultima_copia <> NEW.nro_ultima_copia ) THEN IF OLD.estado = 'C' THEN raise exception 'No se puede modificar datos del acta porque esta Cerrada'; ELSEIF OLD.estado = 'B' THEN raise exception 'No se puede modificar datos del acta porque esta Anulada'; END IF ; END IF; END IF; RETURN NEW; END; $BODY$ LANGUAGE 'plpgsql'; -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Trigger de UPDATE sobre sga_actas -- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- DROP TRIGGER tub_sga_actas ON sga_actas RESTRICT; CREATE TRIGGER tub_sga_actas BEFORE UPDATE ON sga_actas FOR EACH ROW EXECUTE PROCEDURE ftub_sga_actas();