From: | "Calabaza Calabaza" <calalinux(at)gmail(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Modificar una funcion de Postgresql 8.0.3 para que corra en un 7.4.8 |
Date: | 2007-06-19 17:38:08 |
Message-ID: | 958993320706191038r841407dg7da262a761fdd005@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola amigos tengo el siguiente problema:
A duras penas escribi una funcion en un postgresql 8.0.3 (que es el
que uso para desarrollo) pero el server de produccion tiene postgresql
7.4.8 y me da problemas al recuperar la funcion que he creado.
Si me pueden guiar para saber donde puedo buscar info sobre las
diferencias entre la sintaxys de las funciones en una y otra version.
o mas rapido
Que cambios debo hacerle a la funcion para que corra sin problemas en el 7.4.8?
aqui va el codigo de la funcion:
CREATE OR REPLACE FUNCTION actualiza_importe_viatico()
RETURNS TRIGGER AS $$
DECLARE
valor integer := 0;
BEGIN
IF (TG_OP = 'DELETE') THEN
valor := SUM(bv_importe_total) FROM beneficiarios_viaticos WHERE
viaticos_via_id = OLD.viaticos_via_id;
IF valor IS NULL THEN
valor :=0;
END IF;
UPDATE viaticos set via_importe = valor WHERE via_id = OLD.viaticos_via_id;
RETURN OLD;
ELSIF (TG_OP = 'UPDATE') THEN
valor := SUM(bv_importe_total) FROM beneficiarios_viaticos WHERE
viaticos_via_id = NEW.viaticos_via_id;
IF valor IS NULL THEN
valor :=0;
END IF;
UPDATE viaticos set via_importe = valor WHERE via_id = NEW.viaticos_via_id;
RETURN NEW;
ELSIF (TG_OP = 'INSERT') THEN
valor := SUM(bv_importe_total) FROM beneficiarios_viaticos WHERE
viaticos_via_id = NEW.viaticos_via_id;
IF valor IS NULL THEN
valor :=0;
END IF;
UPDATE viaticos set via_importe = valor WHERE via_id = NEW.viaticos_via_id;
RETURN NEW;
END IF;
-- RETURN NULL; -- result is ignored since this is an AFTER trigger
END;
$$ LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION actualiza_importe_viatico() OWNER TO postgres;
GRANT EXECUTE ON FUNCTION actualiza_importe_viatico() TO public;
GRANT EXECUTE ON FUNCTION actualiza_importe_viatico() TO postgres;
COMMENT ON FUNCTION actualiza_importe_viatico() IS 'Actualiza el campo
via_importe de la tabla viaticos cuando exista alguna actualización,
inserción o borrado en beneficiarios_viaticos.';
Aqui creamos el Trigger
CREATE TRIGGER actualiza_importe_viaticos
AFTER INSERT OR UPDATE OR DELETE
ON beneficiarios_viaticos
FOR EACH ROW
EXECUTE PROCEDURE actualiza_importe_viatico();
Lo que hace el trigger es en base a modificaciones en una tabla
calcular un importe para otra tabla.
Desde ya muchas gracias!
--
§~^Calabaza^~§ desde Paraguay
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2007-06-19 17:50:48 | Re: Modificar una funcion de Postgresql 8.0.3 para que corra en un 7.4.8 |
Previous Message | Alvaro Herrera | 2007-06-19 17:25:59 | Re: Ejecutar \copy desde VB |