Ir para conteúdo
Fórum Script Brasil
  • 0

Trigger AFTER


Marcel Costa

Pergunta

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 só 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?

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Marcel, eu sei que a sua pergunta não é esta, mas eu acho uma péssima idéia criar a matricula concatenando com o nome do município.

Se é necessário que o município faça parte da chave primária (o que também não é uma grande idéia) então crie a chave primária combinando os dois campos: matricula e id do município com o id do município fazendo referência à tabela de municípios:

create table municipio (
    id integer primary key,
    nome text
    )
;
create table aluno (
    matricula integer not null,
    municipio_id integer references municipio (id),
    nascimento_data date not null,
    primary key (municipio_id, matricula)
    )
;

Editado por Kakao
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...