Modificar una funcion de Postgresql 8.0.3 para que corra en un 7.4.8

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

Responses

Browse pgsql-es-ayuda by date

  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