Talvez se mudares a lógica da tua trigger...
da uma olhada nessa
CREATE OR REPLACE FUNCTION fnpessoa_nacionalidade_upd()
RETURNS "trigger" AS
$BODY$
DECLARE
vNACIONALIDADE varchar(100);
BEGIN
if new.spas_id is not null then
select spas_nacion into vNACIONALIDADE
from sie_paises
where spas_id = new.spas_id;
else
select spas_nacion into vNACIONALIDADE
from sie_paises
where spas_id = old.spas_id;
end if;
if found then
new.nacionalidade := vNACIONALIDADE;
end if;
RETURN new;
END; $BODY$
LANGUAGE 'plpgsql' VOLATILE;
onde testo se o campo recebido new.spas_id para null e depois então faço o
select na tabela para atualizar (if found) o new.nacionalidade caso
encontrado registro na tab.
2008/7/22 Glauber Almeida <[EMAIL PROTECTED]>:
>
> Pois é.
>
> Foi a primeira coisa que conferir na tabela de vendas e clientes.
>
> Tabela de venda erp_venda
> ven_nom_cli varchar(50)
>
> Tabela de clientes erp_cliente
> cli_nom varchar(50)
>
>
> Isso que é foda, mas não sei se tenho que declarar esses campos ou se o
> tipo
> rowtype já pega o tipo das colunas selecionadas da própria tabela.
>
>
>
> Rudinei Dias-3 wrote:
> >
> > Erro: invalid input syntax for integer: "ERLON PAULO ANDRADE"
> > CONTEXT: PL/pgSQL function "fun_tri_erp_venda_ins" line 11 at SQL
> > statement
> >
> > Glauber,
> >
> > pelo erro que o postgres esta retornando, parece que o tipo do campo
> > ven_nom_cli não corresponde a rscliente.cli_nom.
> >
> > Rudinei Dias
> >
> >
> >
> > 2008/7/22 Glauber Almeida <[EMAIL PROTECTED]>:
> >
> >>
> >> Bom pessoal, estou com um problema em uma trigger e não consigo achar o
> >> que
> >> esta errado.
> >>
> >> Funcionalidade:
> >> Na inclusão da venda deve selecionar o cliente na tabela de clientes e
> >> duplicar os dados (nome do cliente, número do cpf/cnpj) na tabela de
> >> venda.
> >>
> >> Trigger: tri_erp_venda_ins
> >> Type: before
> >> For each: Row
> >> On event: Insert
> >>
> >> $body$
> >> declare
> >> rscliente erp_cliente%rowtype;
> >>
> >> begin
> >> select cli_cod, cli_nom, cli_num_cpf_cnpj into rscliente from
> >> erp_cliente
> >> where cli_cod = new.cli_cod;
> >> if not rscliente.cli_cod is null then
> >> new.ven_nom_cli := rscliente.cli_nom;
> >> new.ven_num_cpf_cnpj := rscliente.cli_num_cpf_cnpj;
> >> else
> >> new.cli_cod:=1;
> >> new.ven_nom_cli := 'CONSUMIDOR FINAL';
> >> new.ven_num_cpf_cnpj := '1234567890';
> >> end if;
> >> end;
> >>
> >> end;
> >> $body$
> >>
> >>
> >> Erro: invalid input syntax for integer: "ERLON PAULO ANDRADE"
> >> CONTEXT: PL/pgSQL function "fun_tri_erp_venda_ins" line 11 at SQL
> >> statement
> >>
> >> Ao inserir na tabela de vendas um código de cliente existente na tabela
> >> de
> >> cliente esta ocorrendo o erro acima.
> >>
> >>
> >>
> >> --
> >> View this message in context:
> >> http://www.nabble.com/Erro-em-trigger-tp18597325p18597325.html
> >> Sent from the PostgreSQL - Brasil mailing list archive at Nabble.com.
> >>
> >> _______________________________________________
> >> pgbr-geral mailing list
> >> [email protected]
> >> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
> >>
> >
> > _______________________________________________
> > pgbr-geral mailing list
> > [email protected]
> > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/Erro-em-trigger-tp18597325p18597612.html
> Sent from the PostgreSQL - Brasil mailing list archive at Nabble.com.
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral