Em 22 de agosto de 2014 21:43, Danilo Silva <danilo.dsg.go...@gmail.com> escreveu:
> Pessoal, > > Possuo uma tabela de histórico de leitura, onde cada registro possui o id > da tabela pai: > > tabela_documento = tabela pai (contém os dados principais do objeto) > tabela_historico = historico de leituras (contém data, hora, origem e > destino de cada objeto). > > Resumindo, para cada registro na tabela pai, eu posso ter vários registros > na tabela de histórico. > > O meu problema está que por uma falha na programação, o sistema não > obedeceu essa regra, ficou no relacionamento 1 para 1. > > Preciso agora corrigir isso, pegar todos os registros da tabela de > histórico e atualizá-los com um único id da tabela pai correspondente. > > Pensei em utilizar a querie abaixo, onde eu monto o comando de update na > tabela de histórico e delete na tabela pai > > SELECT > , 'UPDATE historico SET idpai = > '||split_part(string_agg(idpai::text,','),',',1)||' WHERE (idhistorico IN > ('||string_agg(idhistorico::text,',')||'));' > , 'DELETE FROM tabela_pai WHERE (idpai IN > ('||string_agg(idpai::text,',')||')) AND (idpai <> > '||split_part(string_agg(idpai::text,','),',',1)||');' > FROM historico GROUP BY codempresa,codcliente,codproduto,codbarras HAVING > COUNT(*) > 1 > > mas encontrei 2 problemas, o primeiro é a demora no select, cancelei o > select após 25 minutos (a tabela possui em torno de 980 mil registros), o > segundo é o limite de caracteres de retorno da função string_agg (retorna > parte dos códigos, pois no final fica "(...)". > > Vamos lá, existe uma forma melhor de executar o eu preciso? > > A função string_agg realmente possui essa limitação? > > > Pessoal esqueci de mencionar que executei a select no pgadmin, estive vendo pelo psql e parece que a limitação de caracteres da função string_agg não acontece, talvez seja alguma coisa do pgadmin. []s Danilo
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral