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?