Edicao simultanea de um registro

3 respostas
cyberjobe

Ola’

Sou novo na parte de acesso a banco de dados em Java. Vim do Delphi e nele, quando um usuario tentava alterar um registro que ja’ estava sendo alterado por outro usuario, uma exececao era disparada, informando que fulano de tal ja’ esta’ editando o registro.

Como posso fazer algo desse tipo usando JDBC? Aproveitando… o hibernate implementa uma solucao para isso?

Obrigado!

3 Respostas

danieldestro

Que tal usar LOCK de registros? Veja se seu banco suporta isso.

cyberjobe

Eu estou usando o PostgreSQL e, olhando a documentacao, vi um comando interessante: SELECT * FROM tabela FOR UPDATE. Isso trava os registros retornados ate’ q eu os atualize.

Se outro usuario tentar atualizar nao conseguira’. So’ que ele so’ vai saber que o registro esta’ sendo editado ao salvar. Vou olhar mais a respeito.

Mas… tem certeza que vou ter que fazer isso na mao mesmo? =)

joaobosco

Falae!
O postgresql resolve o problema de acesso concorrente automaticamente.
Diferentemente de outros bancos, o PG nao usa lock. Ele usa um esquema de multi versões. Qdo alguem vai ler algum dado do banco ele lê um dado de uma “versão mais antiga”. Se alguem for gravar neste dado ele grava numa versão mais nova.
Assim, nao rola “lock”. A leitura nunca bloqueia a gravacao e vice-versa.

teh maiis ae!
Criado 6 de agosto de 2004
Ultima resposta 9 de ago. de 2004
Respostas 3
Participantes 3