Ok,
Obrigado.... peço desculpas a lista se fui recorrente. De fato nao pesquisei 
na lista antes de enviar a pergunta.

-----Mensagem Original----- 
From: Flavio Henrique Araque Gurgel
Sent: Wednesday, June 20, 2012 2:59 PM
To: [email protected]
Subject: Re: [pgbr-geral] Migrando de 8.2.4 para 9.1

Em 20-06-2012 14:54, Marcio escreveu:
> Olá,
> Estou migrando uma base de dados da versao 8.2.4 para 9.1 e estou me
> deparando com uma situação de “incompatibilidade” em uma trigger function.
> No exemplo abaixo, os campos concatenados sao do tipo integer e do tipo
> varchar.
> O campo que recebe os dados concatenados é do tipo varchar.
> Ao executar a function via trigger, recebo a mensagem:
> “Error: operator does not exist: integer || integer at character 45
> HINT: No Operator matches the given name and argument type( s). Yu might
> need to add explicit type casts.”
> CREATE OR REPLACE FUNCTION gera_campo_row_custom()
> RETURNS trigger AS
> $BODY$
> DECLARE
> BEGIN
> IF NEW.campo_tipo_varchar IS NULL THEN
> update table_foo set campo_tipo_varchar = new.CODIGO1 || new.CODIGO2 ||
> new.NUMERO || new.SERIE where ....
> onde temos:
> codigo1,codigo2 e numero do tipo integer.
> SERIE do tipo character varying(10).

Marcio, isto tem sido falado nesta lista pelo menos 5 vezes este mês,
várias vezes ao longo dos anos.

A partir da versão 8.3 o PostgreSQL deixou de aceitar dezenas de casts
implícitos. Você precisa explicitamente passar o cast, por exemplo, no
seu código:

update table_foo set campo_tipo_varchar = new.CODIGO1::text ||
new.CODIGO2::text || new.NUMERO || new.SERIE where ....

[]s

Flavio Henrique A. Gurgel
Consultor e Instrutor 4Linux
Tel: +55-11-2125-4747
www.4linux.com.br
_______________________________________________
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

Responder a