Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Roberto Gugisch

Problemas com Triggers

Recommended Posts

Ontem instalei uma nova versão do meu servidor!

 

Antes disso eu fiz um dump no meu banco de dados (dumpall). Reinstalei o servidor (Windos 2008 Enterprise e reinstalei o PG.

 

Ao retornar o meu Dump tive alguns problemas, o psql não reconhecia alguns comandos como "\connect postgres".

 

O que ele não reconheceu refiz manualmente.

 

Só que as triggers que eu tenho no banco deixaram de funcionar. Já as olhei e reolhei e não vejo nada que possa estar erradas.

 

Notem que elas funcionavam normalmente. O erro que estão dando é o seguinte (este erro é de um das triggewr, mas acredito que resolvendo um resove-se todos os outros).

 

 

---------------------------
SQL Error: ERRO:  registro "new" não tem campo "dt_mudanca"
CONTEXT:  função PL/pgSQL "update_posvendas" linha 2 em IF.
---------------------------
OK  

 

 

Minha trigger:

 

BEGIN
 INSERT INTO parana.historico_pv
     ( id, status, dt_mudanca, data )
   VALUES
     ( new.id, new.status, new.dt_status, now() );
 IF new.observacao <> '' THEN
   INSERT INTO parana.hist_pv
       ( id, dt_mudanca, observacoes, data )
     VALUES
       ( new.id, new.dt_status, new.observacao, now() );
 END IF;
 RETURN new;
END;

 

É uma trigger simples, ela simplismente guarda todas as alterações que existiram no campo Observações e no campo Status!

 

Outra coisa que alterou depois que foi alterado o servidor são os generations que antes estavam assim:

 

nextval('ordens_id'::regclass)

 

 

e agora só funcionam se estiverem assim:

 

nextval('parana.ordens_id'::regclass)

 

Eu tive que incluir o schema neles para que funcionassem. Sem ele o PG nem achava o generator.

 

Minha plataforma:

* PG 8.4 rodando no Windows Server 2008 Enterprise

* Delphi 7 conectando através do Zeos

 

Alguém teria alguma sugestão de como acertar isso?

 

Desde já agradeço a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

SQL Error: ERRO: registro "new" não tem campo "dt_mudanca"

CONTEXT: função PL/pgSQL "update_posvendas" linha 2 em IF.

 

Tenta abstrair um pouco a questão da versão...

 

A que tabela esta trigger esta associada?

 

Nesta tabela existe o campo dt_mudanca?

 

O new representa a nova tupla inserida. NEW.dt_mudanca pressupoe que existe o campo dt_mudanca nesta tabela.

 

BEGIN

INSERT INTO parana.historico_pv

( id, status, dt_mudanca, data )

VALUES

( new.id, new.status, new.dt_status, now() );

IF new.observacao <> '' THEN

INSERT INTO parana.hist_pv

( id, dt_mudanca, observacoes, data )

VALUES

( new.id, new.dt_status, new.observacao, now() );

END IF;

RETURN new;

END;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.