Estou executando uma carga de dados em uma base Postgre através de comandos INSERT.
Para que não houvessem problemas em relação as foreing key durante a carga utilizei o comando SET CONSTRAINTS ALL DEFERED; dentro da transação.
BEGIN;
SET CONSTRAINTS ALL DEFERRED;
INSERT INTO xxxx .......
<...>
COMMIT;
Parece que este comando não está fazendo efeito por que, no momento da carga das linhas de uma tabela que possui um auto-relacionamento, estou recebendo um erro de violação de FK.
ERROR: insert or update on table "xxxxx" violates foreign key constraint "fk_xxxxx_autorel"
DETAIL: Key (id_xxxxxx_pai)=(275) is not present in table "xxxxxxx".
Verifiquei dentro do script que o INSERT com a chave = 275 está 10 comandos depois do INSERT que referencia esta linha, ou seja, as linhas estão fora da ordem esperada caso a checagem da constraints estivesse sendo feita a cada INSERT (modo IMMEDIATE).
Mas se todas as linhas necessárias estão presentes no script e foi sinalizado que a verificação das constraints fosse feita somente no final da transação (modo DEFERRED), por que está dando erro?
Verônica
Grupo DBA IBGE
_______________________________________________ Grupo de Usuários do PostgreSQL no Brasil Antes de perguntar consulte o manual http://pgdocptbr.sourceforge.net/
Para editar suas opções ou sair da lista acesse a página da lista em: http://pgfoundry.org/mailman/listinfo/brasil-usuarios
