Jump to content


Photo

Trigger After


  • Faça o login para participar
1 reply to this topic

#1 Marcel Costa

Marcel Costa

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Não informado

Posted 15/04/2011, 00:22

Preciso pegar um valor que esta em uma outra tabela, para conctenar com a matricula
Ex.: Matricula antiga: 0123456
Matricula nova: sal0123456
Esse sal > vem do municipio "SALvador"

Para pegar o nome do Municipio do campus, fiz uma função, que segue abaixo:

CREATE OR REPLACE FUNCTION matricula_aluno(mat_aluno character varying)
RETURNS character varying AS
$BODY$
DECLARE
municipio character varying(20);
matriculanova character varying(20);
BEGIN
Select into municipio mun."MUN_NOME" From aluno a JOIN curso c
ON a.curs_cod = c.curs_cod
JOIN campus cm
ON c.camp_cod = cm.camp_cod
JOIN municipios mun
ON cm.mun_cod = mun."MUN_COD"
Where alun_matricula = mat_aluno;
select into municipio substring(municipio from 0 for 4);
select into municipio lower(municipio);
matriculanova := municipio||mat_aluno;
return matriculanova;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION matricula_aluno(character varying) OWNER TO postgres;

Essa função, faz todo um select, que chega ate o MUN_NOME, quando o alun_matricula = parametro passado pela função.
Essa função esta funcionando. Pega as 3 primeiras letras do municipio e conctena com o número de matricula.

Só que, essa função soh funciona se eu colocar a TRIGGER como AFTER. Mas, com a trigger em AFTER, a função não consegue inserir no registro.

O que eu posso fazer?

#2 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 15/04/2011, 09:19

Não entendo de PGSQL, mas uma solução seria usar um UPDATE no AFTER. Resolve, pelo menos.




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq