Olá Lucas, é exatamente isso. Vc cria um function que retorna um tipo Trigger.
Abaixo um exemplo que tenho. O exemplo faz o seguinte:
Se incluir um documento a pagar que o tipo de vencimento seja "A VISTA" ele já 
liquida o documento, inserindo um registro
na tabela liquidacoes_contas_pagar. Tem um cursor pra pegar uns parâmetros e um 
teste antes. mas é mais ou menos o que vc quer.


CREATE OR REPLACE FUNCTION TG_AI_CPA () RETURNS trigger AS
$body$
DECLARE
   C1 CURSOR IS
      SELECT FC_PARAMETRO(11, 'MCP_MOVIMENTO_AVISTA') AS MCP_MOVIMENTO,
             FC_USUARIO() AS USR_USUARIO;
   V1 RECORD;
begin
   OPEN C1;
   FETCH C1 INTO V1;
   CLOSE C1;
   IF (NEW.TPV_TIPO = 2) AND (V1.MCP_MOVIMENTO IS NOT NULL) THEN
      INSERT INTO LIQUIDACOES_CONTAS_PAGAR
        (LCP_SEQUENCIA, CPA_SEQUENCIA, MCP_MOVIMENTO,
         LCP_DATA_OCORRENCIA, LCP_DATA_CONTABIL, LCP_VALOR,
         LCP_LANCAMENTO_MANUAL, USR_USUARIO, LCP_RETROATIVO)
      VALUES (NEXTVAL('SQ_LIQUIDACOES_CONTAS_PAGAR'), NEW.CPA_SEQUENCIA, 
CAST(V1.MCP_MOVIMENTO AS NUMERIC),
              NEW.CPA_VENCIMENTO, NEW.CPA_VENCIMENTO, NEW.CPA_VALOR,
               'S', V1.USR_USUARIO, 'S');
   END IF;
   RETURN NEW;
end;
$body$
LANGUAGE 'plpgsql';

CREATE TRIGGER TG_AI_CPA AFTER INSERT
ON contas_pagar FOR EACH ROW
EXECUTE PROCEDURE TG_AI_CPA();



  ----- Original Message ----- 
  From: Lucas Paz 
  To: [email protected] 
  Sent: Tuesday, December 09, 2008 10:52 AM
  Subject: [pgbr-geral] Trigger Postgresql vs Firebird


  Pessoal, estamos migrando para o Postgresql e estou com duvida de como fazer 
algumas trigger's visto que a estrutura do firebird é completamente diferente 
do Postgresql. No Firebird tenho isso por exemplo...

  CREATE TRIGGER ADD_HISTORICO_AI FOR LANCAMENTOS ACTIVEAFTER INSERT POSITION 0
  AS 
  BEGIN 
     INSERT INTO HISTORICO_LANCAMENTO (ID_BANCO, ID_LANCAMENTO, ID_ESTADO, DATA)
   VALUES (new.ID_BANCO, new.ID_LANCAMENTO, new.ID_ESTADO, new.DATA_ENTRADA);
  END;

  Essa trigger faz o seguinte, quando insiro uma linha na tabela lancamentos, 
ela automaticamente insere uma linha na tabela historico_lancamentos... i
  pelo que vi tenho que criar uma function e um tigger que dispara a 
function... se alguem puder me ajudar a fazer essa trigger no firebird pra eu 
entender como funciona eu agradeço, as outras são bem parecidas entendendo essa 
já fica certo.

  Obrigado pela atenção... 



  -- 
  Lucas Paz




------------------------------------------------------------------------------


  _______________________________________________
  pgbr-geral mailing list
  [email protected]
  https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a