Oi Tiago, para sua pergunta vou inserir apenas todos os registros que não violaram a chave! Mas de qualquer forma é uma alternativa. Valeu, Obrigado!
2009/8/20 Tiago Adami <[email protected]> > Olá, Miguel. Se entendi bem o seu problema você quer que o processo > continue sendo executado, inserindo apenas o primeiro registro que possua a > chave duplicada, certo? Ao invés de parar a execução gerando uma exceção, > continuaria sendo executada inserindo os registros de outras chaves. > > Bem, para fazer isso, te dou duas alternativas: > > 1) Remova os registros duplicados antes de inserí-los, OU > > 2) Crie um arquivo com vários comandos INSERT delimitados por > ponto-e-virgula e execute-o através do "psql" [1] via console (CMD no > Windows). Assim quando houver um registro duplicado, ele apenas o avisará e > continuará executando a próxima linha (desde que você não use o parâmetro > "-1" ou "--single-transaction"). > > A alternativa 1 deve ser utilizada se você estiver inserindo registros pela > aplicação. A 2 apenas para carga de dados. > > [1] http://www.postgresql.org/docs/8.4/static/app-psql.html > > > -- > Tiago J. Adami > Dois Vizinhos - Paraná - Brasil > > > > 2009/8/20 MIGUEL JOSE DE LIMA <[email protected]> > >> Oi André, tento estudar o máximo possível antes de fazer alguma pergunta >> ao grupo, >> mas confesso que sou totalmente inexperiente no postgresql, ou seja, >> confesso que >> estou tendo dificuldades em entender o seu exemplo: >> Quando há uma violação, conforme o seu exemplo, o processamento irá >> continuar? >> e as mensagem de violação, como fasso para ignora-las ou invia-las para um >> "lixo" >> temporário? >> Se puder continuar me ajudando, fico agradecido! >> >> Valeu! >> >> 2009/8/20 Andre Fernandes <[email protected]> >> >> Como disse antes, podes usar uma trigger para ignorar registros >>> duplicados durante a inserção, dessa forma se o registro já existir na base >>> de dados, a trigger ignoraria esse comando. Dessa forma, não terias >>> problemas de duplicidade alguma. >>> >>> Abraços, >>> André. >>> >>> 2009/8/20 MIGUEL JOSE DE LIMA <[email protected]> >>> >>>> Caro colega, talvez eu não expliquei direito: Eu não desejo registros >>>> duplicados!!! >>>> Então, não basta deletar a constraint. E por outro lado eu não tenho >>>> conhecimento suficiente para afirmar que há uma aberração em outro produto, >>>> mas tenho conhecimento suficiente para dizer que em muitos processamentos a >>>> INSERSSÃO DE REGISTROS ignorando os erros de duplicidades é muito mais >>>> rapido, sem ter a necessidade de >>>> verificar a duplicidade da chave e inclusive a do registro! >>>> >>>> Mas valeu, Muito Obrigado >>>> >>>> 2009/8/20 Roberto Mello <[email protected]> >>>> >>>>> 2009/8/20 MIGUEL JOSE DE LIMA <[email protected]>: >>>>> >>>>> > Pessoal, >>>>> > Em um procedimento para inserir várias linhas/registros (INSERT ... >>>>> SELECT >>>>> > ....) como >>>>> > posso contornar o erro de chave duplicada, sem interromper o >>>>> > processamento??? >>>>> > >>>>> > Pesquisei na lista e não achei nada. E através do google achei um >>>>> exemplo >>>>> > que utiliza uma SubQuery >>>>> > com a clausula "NOT IN (SELECT ...)". Será que esta é a melhor forma? >>>>> > Não existe nada parecido com o "INSERT IGNORE ..." do MySQL? >>>>> (Postgresql 8.3 >>>>> > ou 8.4) >>>>> >>>>> Não. Esse tipo de aberração grotesca só se vê num produto como o MySQL. >>>>> >>>>> Se quiser o mesmo efeito no PostgreSQL, faça um DROP na constraint, >>>>> faça suas inserções, e depois re-crie a chave ou constraint. >>>>> >>>>> Roberto >>>>> _______________________________________________ >>>>> 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 >>>> >>>> >>> >>> >>> -- >>> André de Camargo Fernandes >>> >>> >>> >>> _______________________________________________ >>> 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 >> >> > > > > _______________________________________________ > 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
