>> 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
