Pode-se postergar a checagem de chaves: http://www.postgresql.org/docs/current/static/sql-set-constraints.html
BEGIN; SET CONSTRAINTS ALL DEFERRED; INSERT INTO xxxx ....... <...> COMMIT; Mas isso não *desliga* a checagem, apenas posterga (deixa para o final). Quando o COMMIT for executado as constraints serão todas checadas. Há casos raros onde dois registros em duas tabelas diferentes se referenciam mutuamente com chaves estrangeiras não-nulas -- não me perguntem, mas já vi isso :-). Nesse caso, um INSERT em uma requer um INSERT na outra mas ambos falham por causa das chaves estrangeiras. Com esse comando pode-se fazer os dois INSERTS numa transação. Para permitir futuramente que se use o comando acima, as constraints em questão precisam ser declaradas como DEFERRABLE (ver documentação). Não sei se isso resolve o problema do Junior Prado... Em 18/12/07, Euler Taveira de Oliveira <[EMAIL PROTECTED]> escreveu: > > junior Prado wrote: > > > Como desligar e ligar a checagem de chaves estrangeiras? > > > > check foreign key = 0; //está certo? > > > Não existe tal comando no PostgreSQL. Para desabilitar verificação de > chaves estrangeira somente removendo-as e depois recriando-as. > Certifique-se que não manipulará os dados entre estas duas etapas pois > você poderá não conseguir recriar as chaves estrangeiras. > > ALTER TABLE foo DROP CONSTRAINT bar_col_fkey; > > > -- > Euler Taveira de Oliveira > http://www.timbira.com/ > _______________________________________________ > pgbr-geral mailing list > [email protected] > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > -- Atenciosamente, Alexsander da Rosa Linux User #113925
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
