=============================================================
Partcipe das enquetes sobre os novos rumos da comunidade! 
Acesse http://www.pgfoundry.org:8080/novosRumos
=============================================================


Olá. To desenvolvendo uma aplicação client/server com Delphi, ZeosLib e PG 8.0.
 
Estou com um sério problema e acredito que seja do PG.
 
Tenho duas tabelas, PESSOA e USUARIO. Em PESSOA guardo o ID do usuário que criou o registro, no campo ID_USUARIO. Criei uma FK (NOT DEFERRABLE) nesse campo com a tabela USUARIO e é aí que se encontra o problema.
 
Abro duas seções de meu sistema e nas duas mando inserir um registro. Assim que o registro é inserido, já defino automaticamente no campo ID_USUARIO o código do usuário ativo, e após isso é dado um POST para que o registro já seja gravado. Quando esse POST automático é dado, o outro sistema fica travado até que a transação que deu o POST seja finalizada.
 
Testei em outras tabelas, e isso só acontece em tabelas que possuam FK.
 
Em 3 dias de testes, descobri que se eu não defino o ID_USUARIO após inserir e antes do POST, ou seja, se ao inserir dou apenas o POST sem definir o usuário (FK), dá tudo certo, não dá problemas, o outro sistema não fica travado. No entanto, se eu ecluo a FK e deixo como estava antes, definindo o ID_USUARIO antes do POST, o problema não acontece. Cheguei à conclusão que o problema é com a FK.
 
Então alterei a FK para DEFERRABLE - INITIALLY DEFERRED. O problema desapareceu.
 
Alguém sabe se realmente existe esse bug?
 
Obrigado.
 
Nelson.
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/

Responder a