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

Responder a