Osvaldo Kussama escreveu:
Boa Tarde Osvaldo!!Em 01/12/08, Luiz Henrique<[EMAIL PROTECTED]> escreveu:Bom dia pessoal!!!Um cliente solicitou que todo e qualquer texto gravado no BD fosse gravado em letras maiúsculas. Pesquisei um pouco sobre o assunto e não encontrei nada esclarecedor. Gostaria de saber se existe alguma função do próprio banco para fazer isso... A solução (quebra galho) que desenvolvi até agora foi uma TRIGGER BEFORE INSERT OR UPDATE que grava os novos valor em uma tabela temporária com a mesma estrutura da tabela em que os dados estão sendo gravados, identifica quais campos são Texto, faz um update destes campos com um UPPER() e pega de volta esses valores atualizados para o NEW. A função é esta: CREATE OR REPLACE FUNCTION ftp_upper() RETURNS "trigger" AS $BODY$ declare r record; comando text; begin create temp table maiuscula on commit drop as (select new.*); for r in (SELECT pg_attribute.attname as coluna FROM pg_stat_all_tables JOIN pg_attribute on pg_attribute.attrelid = pg_stat_all_tables.relid JOIN pg_type on pg_attribute.atttypid = pg_type.oid WHERE pg_stat_all_tables.schemaname = 'public'::name AND pg_stat_all_tables.relname = TG_TABLE_NAME AND pg_attribute.attstattarget < 0 AND pg_type.typoutput in ('textout', 'varcharout')) loop comando := 'update maiuscula set ' || r.coluna || ' = upper(' || r.coluna || ');'; execute comando; end loop; for r in (select * from maiuscula) loop new := r; end loop; return new; end;$BODY$ LANGUAGE 'plpgsql' VOLATILE; Seria extremamente mais simples se existisse algo como "NEW := UPPER(NEW)" mas acho que infelizmente não existe. Alguém conhece uma outra solução mais viável do que esta que encontrei???Dê uma olhada no histórico mas, se não me falha a memória, sempre que questões parecidas foram colocadas aqui na lista foi sugerido o uso de pl/perl. Osvaldo _______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Obrigado pelo dica!! Como não tenho conhecimento em pl/perl vou ficar com a minha alternativa, mesmo pq é só um quebra-galho até ser implementado na aplicação (o que já foi providenciado). Abraço!! -- Luiz Henrique Livrari Implantador de Sistemas Jr. MSI SOLUÇÕES - Unidade Ourinhos Av. Dr. Altino Arantes, 131 Sala 145 - 146 Centro - Ourinhos/SP - Brasil Fone/Fax: +55 (14) 3324-8181 www.msisolucoes.com.br |
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral