Jump to content
Fórum Script Brasil
  • 0

function trigger


robinhocne
 Share

Question

Pessoal, estou criando uma function trigger e só estou com um probleminha que não consigo resolver....

o trigger funcionara quando dar um insert na tabela de pagamentos...

dentro da função, tenho insert e update com um loop para gerar parcelas....e etc....

tem uma etapa dela que preciso retorna uma consulta de um select com vários campos que são para calcular os juros de parcelas, vencimentos, tipos de bandeiras e etc...

então eu não consigo fazer um select e colocando para cada coluna um into variavel, já tentei criar uma function records mas não deu para minha ideia....

tenho o seguinte select

SELECT ds_rede,tp_cartao, ds_emissor,ds_bandeira,tp_formula from tbl_adm_redescartao where ds_emissor = NEW.ds_emissor

quero armazenar em variavel as colunas do select porque vou usar posteriormente nos calculos.

Como posso ?

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Ola Amigo...

eu tb to começando no postgre... eu tive essa dificuldade em criar uma trigger para gerar um sequencial em caracter de uma primary key...

-mas vai o a minha trigger...tem 2 trigger em q eu posso gerar/alterar o meu serial que tenho no minha table de controle(ctl) 

espero ter ajudado... eu vou criar um tópico de uma dificuldade que eu tenho espero q você me de tb uma dica...

--- primeira trigger

CREATE OR REPLACE FUNCTION cli_seq() RETURNS trigger AS $cli_seq$
  DECLARE
    c  ctl%ROWTYPE; -- aqui eu crio a variavel local que vai armazenar o registro todo da table ctl
  BEGIN
    IF (TG_OP = 'INSERT') THEN
      update ctl SET cl01 = geraseq(cl01);
      SELECT *  INTO c FROM ctl;
      NEW.cl01 := c.cl01;
    END IF;
    RETURN NEW;
  END;
$cli_seq$ LANGUAGE plpgsql;

--segunda trigger
CREATE OR REPLACE FUNCTION cli_seq() RETURNS trigger AS $cli_seq$
  DECLARE
--    c  ctl%ROWTYPE;
    ccl01 char(10); -- aqui eu crio uma  var local
  BEGIN
    IF (TG_OP = 'INSERT') THEN
      update ctl SET cl01 = geraseq(cl01);
      SELECT cl01  INTO ccl01 FROM ctl; -- aqui eu passo o conteudo do registro/coluna ctl.cl01 para a variavel local "ccl01"
      NEW.cl01 := ccl01; 
    END IF;
    RETURN NEW;
  END;
$cli_seq$ LANGUAGE plpgsql;

CREATE  TRIGGER cli_seq BEFORE INSERT ON cli  FOR EACH ROW  EXECUTE PROCEDURE cli_seq();

Edited by jc101b
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...