Citando Lucas Paz <[EMAIL PROTECTED]>:
> 2008/12/9 Celso <[EMAIL PROTECTED]>
>
>> 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 <[EMAIL PROTECTED]>
>> *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
>>
>> 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
>>
>>
>
> Então Pessoal criei a function assim
>
>
> CREATE OR REPLACE FUNCTION add_historico()
> RETURNS "trigger" AS
> $BODY$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;$BODY$
> LANGUAGE 'plpgsql' VOLATILE;
> ALTER FUNCTION add_historico() OWNER TO spcred;
>
> Criei o trigger tudo ok... Só que na hora que vou inserir os dados na
> tabela lancamentos aparece isso pra mim...
>
> Query failed: ERRO: control reached end of trigger procedure without RETURN
> CONTEXT: PL/pgSQL function add_historico
>
>
> pelo que entendi falta retornar alguma coisa? correto? Agradeceço a
> atençao...
>
>
>
> --
> Lucas Paz
>
>
Adicione no final da sua funcao
RETURN new;
---------------------------------------------------------------------
Esta mensagem foi enviada atraves do WEB Mail.
----------------------------------------------------------------------------------
Esta mensagem foi verificada pelo sistema de Anti-virus da SJB Solados.
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral