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
