Fórum Acesso concorrente #218393

04/03/2004

0

Gostaria de obter ajuda no que se refere ao acesso concorrente ao banco de dados quando estamos trabalhando em ambiente multi-usuário (cliente/servidor).
Cito um exemplo.

Havendo diversos micros em rede, e estes todos têum um aplicativo que acessam a uma mesma tabela do BD. Úm operador realizou a operação de novo pedido, mas este ainda não salvou o registro. Instantes após este primeiro ter requisitado um novo registro, um outro operador requisitou um novo registro, ficando dois registros abertos. Tendo-se uma rotina que implementa automaticamente um novo número para pedido, quando fora solicitado pelo primeiro um novo pedido, fora gerado o número de pedido 100, mas, instantes após o primeiro ter solicitado um novo pedido, cujo número é 100, outro usuário também solicitou um novo pedido, mas o pedido de número 100 ainda não foi salvo, sendo assim, fora gerado também o número 100 para este segundo usuário, havenda desta forma dois pedidos de número 100, o que ocasionará um violação de chaves no banco.

Caros companheiros, solicito a quem souber e puder responder a este problema, que envie uma resposta, pois para os cobras em delphi, isto deve ser uma moleza.


Ricardo Giordano

Ricardo Giordano

Responder

Posts

04/03/2004

Joilson_gouveia

Minha sugestão é para dois casos:

1º caso: Campo chave é AUTOINCREMENTO
- No formulario de inclusao, após o insert (afterinsert ) dê um POST, vá para o último registro, e dê um EDIT, para continuar com as outras informações.
- Se o usuário cancelar, dê um DELETE, para não manter um registro inconsistente no Banco de Dados;

2º caso: Campo chave não é AUTOINCREMENTO
- Não mostrar a chave para o Usuário enquanto ele não der o POST, ou seja, enquanto ele não gravar a inclusão.
- A chave será construida no evento beforePost (antes do post), o que garante que será única.


Responder

Gostei + 0

04/03/2004

Rômulo Barros

Resolvo este tipo de problemas com um GENERATOR e um TRIGGER.... :twisted: :twisted: :twisted: :twisted:


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar