>> Ola pessoal;
>> Estamos migrando da versão 7.4 para 8.2 mas estamos tendo vários
>> obstáculos nessa migração e agora na reta final apareceu outro
>> problema... anteriormente fazia-mos uma transação da seguinte forma.
>> Temos 2 tabelas: pai e filho sendo que a tabela filho possui uma fk
>> cascade no delete com a pai.
>> Executo: DELETE pai WHERE co_pai = 1; INSERT INTO pai (co_pai) VALUES
>> (2); UPDATE filho SET co_pai = 2;
>> Na versão 7.4 funciona, na 8.2 não, li a documentação e vi que posso
>> mudar a fk para DEFERRED e devo colocar BEGIN; e COMMIT; para que a FK
>> seja validada no final da transação, mas para isso teria que alterar
>> toda minha aplicação.
>> Teria alguma configuração postgres.conf ou alguma outra forma de estar
>> mudando esse comportamento para que seja = a do 7.4?
>>
>>     
>
> tenta desabilitar as triggers antes de alterar a pk...
>
>
> -- desabilita as triggers
> alter table filho disable trigger all;
>
> -- faz os updates
>
> -- habilita as triggers novamente
> alter table filho enable trigger all;
>
>
> Sebastian Selau Webber Colombo
Oi Sebastian, desculpe se não fui claro, mas o meu problema é que no 
momento em que excluo o registro da tabela pai já é excluído da tabela 
filho, portanto no momento que faço um update na tabela filho com o novo 
código do pai o registro filho ja não existe mais, quando eu executava 
isso na versão 7.4 a exclusão da fk era feita no final da transação 
acabava não fazendo nada pois o registro filho ja havia sido modificado 
com o novo código do pai.

Tabela pai, co_pai = 1;
Tabela filho co_pai =1;
Delete pai = 1; (Postgres 8.2 ja apaga da tabela filho)
Insert 2 em pai;
Update filho co_pai = 2 where co_pai =1; (Postgres 8.2 filho com co_pai 
= 1 ja não existe mais)

Resultado esperado;
Tabela pai, co_pai = 2;
Tabela filho co_pai =2;
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a