Re: [pgbr-geral] check foreign key
Em 18/12/07, Alexsander Rosa [EMAIL PROTECTED] escreveu: 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 ... ... 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... Lí um artigo bem completo sobre Deferred Constraints escrito por Rodrigo Hjort na última edição da SQL Magazine ... leitura bem interessante. 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 pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Atenciosamente, Alexsander da Rosa Linux User #113925 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] check foreign key
Galera, Como desligar e ligar a checagem de chaves estrangeiras? check foreign key = 0; //está certo? -- Valter Cezar Prado Junior Analista TI Sem saber como fazer ele fez! ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] check foreign key
Euler, Obrigado pela dica. Att. Valter Cezar Prado Junior Analista TI Sem saber como fazer ele fez! 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 pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Valter Cezar Prado Junior Analista TI Sem saber como fazer ele fez! ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] check foreign key
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 ... ... 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 pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Atenciosamente, Alexsander da Rosa Linux User #113925 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral