El lun, 26-01-2009 a las 11:28 -0300, Paulo Nuñez Valenzuela escribió: > Amigos: > Soy nuevo en esta lista me gustaria si me pueden ayudar con el > siguiente tema. > tengo un trigger creado en Oracle y ahora estamos migrando a > Postgresql, bueno mi funcion disparadora es la siguiente > > CREATE OR REPLACE FUNCTION SUMA_INGRESO() RETURNS trigger AS $$ > BEGIN > IF (TG_OP = 'INSERT') OR (TG_OP = 'UPDATE') THEN > if new.CGINGRESO_VNETO != 0 then > update cg_ingegre > set CGINGEGRE_TINGRE = CGINGEGRE_TINGRE + new.CGINGRESO_VNETO > where mgempre_cod = new.MGEMPRE_COD > and CGPRODUCTOR_IDR = new.CGPRODUCTOR_IDR > and CGFPROC_AAAA = new.CGFPROC_AAAA > and CGFPROC_MM = new.CGFPROC_MM; > end if; > end if; > > IF (TG_OP = 'DELETE') OR (TG_OP = 'UPDATE') THEN > if old.CGINGRESO_VNETO != 0 then > update cg_ingegre > set CGINGEGRE_TINGRE = CGINGEGRE_TINGRE - old.CGINGRESO_VNETO > where mgempre_cod = old.MGEMPRE_COD > and CGPRODUCTOR_IDR = old.CGPRODUCTOR_IDR > and CGFPROC_AAAA = old.CGFPROC_AAAA > and CGFPROC_MM = old.CGFPROC_MM; > end if; > end if; > end; > $$ LANGUAGE plpgsql; > > el trigger que lo llama es: > > CREATE TRIGGER "ICG_INGRESO" > AFTER INSERT OR UPDATE OR DELETE > ON cg_ingreso > FOR EACH ROW > EXECUTE PROCEDURE suma_ingreso(); > > Este trigger no es mas que una suma ascendente
Lo que te dejo a continuación es un ejemplo del manual: Portando funciones desde PL/SQL de Oracle hacia PL/pgSQL: CREATE OR REPLACE FUNCTION cs_fmt_browser_version(v_name varchar, v_version varchar) RETURN varchar IS BEGIN IF v_version IS NULL THEN RETURN v_name; END IF; RETURN v_name || '/' || v_version; END; *************** CREATE OR REPLACE FUNCTION cs_fmt_browser_version(v_name varchar, v_version varchar) RETURNS varchar AS $$ BEGIN IF v_version IS NULL THEN RETURN v_name; END IF; RETURN v_name || '/' || v_version; END; $$ LANGUAGE plpgsql; > De antemano muchas gracias amigos > > -- TIP 5: �Has le�do nuestro extenso FAQ? http://www.postgresql.org/docs/faqs.FAQ.html