yo uso ambas, por razones laborales, en todo caso la generacion de un
triggers en postgres es algo como esto
por ejemplo tengo una tabla reserva que quiero que al insertar un registro,
automaticamente a traves de un triggers inserte el mismo registro en otra
tabla, llamada reserva_auditada. Para eso debo generar lo siguiente

1. crear la tabla reserva y la tabla reserva_auditada

2. creas la funcion como esta

CREATE OR REPLACE FUNCTION audita_reserva_trg()
  RETURNS trigger AS
$BODY$
DECLARE
    fecha timestamp;
    equipo varchar;
BEGIN
    select into fecha current_timestamp(0);
    -- INSERTA LA IP DEL EQUIPO DEL USUARIO
     select into equipo inet_client_addr();
    --select into usuario user;
    IF TG_OP='INSERT' THEN
        INSERT INTO reserva_auditada (rs_cod, pf_cod, pc_cod,
us_firma,rs_fecha,rs_desde, rs_hasta,rs_nombre,rsa_fecha,
rsa_equipo,rsa_audita)
        VALUES (NEW.rs_cod,
NEW.pf_cod,NEW.pc_cod,NEW.us_firma,NEW.rs_fecha,NEW.rs_desde,NEW.rs_hasta,
NEW.rs_nombre,fecha, equipo,'INSERT');
    END IF;
    RETURN NULL;
END;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE
  COST 100;
ALTER FUNCTION audita_reserva_trg() OWNER TO postgres;

2. luego en la tabla reservas creas el trigger que llame a la funcion recien
creada

CREATE TRIGGER audita_reserva_trg
  AFTER INSERT
  ON reserva
  FOR EACH ROW
  EXECUTE PROCEDURE audita_reserva_trg();

 Quien es la que hace el llamado a la funcion antes creada

Alguna duda, al respecto? espero que te quede claro saludos


-- 
Cesar Erices Vergara
Ingeniero en Gestión Informática
Analista de Sistema

Santiago - Chile

Responder a