Euler, acho que entendi a questão...

Na verdade nós não estávamos fazendo uma unidade lógica quando temos somente
selects, ou seja,
ao invés de fazer:

BEGIN;
SELECT * FROM tabela1;
SELECT * FROM tabelan;
COMMIT;

estávamos simplesmente fazendo

SELECT * FROM tabela1;
SELECT * FROM tabelan

Pensava que a unidade lógica iniciava no primeiro UPDATE ou DELETE. No
MS-SQLSERVER é assim e não me ative a este detalhe.

Muito oObrigado,

Clayton



2009/12/19 Euler Taveira de Oliveira <eu...@timbira.com>

> Clayton Graf escreveu:
> > É estranho mas o AccessShareLock ocorre mesmo quando o primeiro comando
> > após a conexão é um SELECT e este select não tem a cláusula FOR SHARE.
> >
> Todo SELECT adiquire AccessShareLock; SELECT ... FOR UPDATE adquire
> AccessRowShareLock.
>
> > Estou conectando via jdbc e parece que é algo no driver. Revisei tudo e
> > não consegui achar o problema. O driver é o último que tem disponível
> > (postgresql-8.4-701.jdbc4.jar)
> >
> Não. Você que *não* está terminando as transações adequadamente. No seu
> exemplo, você terá:
>
> BEGIN;
> SELECT * FROM controle;
>
> Faltou o COMMIT ali. Caso você tenha um pool de conexões, esta transação
> ficará em aberto e, consequentemente, você terá problemas com transações
> que
> querem obter um AccessExclusiveLock.
>
>
> --
>   Euler Taveira de Oliveira
>  http://www.timbira.com/
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



-- 
Clayton Graf
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a