Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fireblade

Incrementar contador

Recommended Posts

Olá!

 

Tenho um campo numa tabela chamada 'numeracao' que guarda o número do último documento da tabela documentos. Quando quero inserir um novo documento na tabela MOVIMENTOS, tenho que ler o numero do ultimo documento na tabela numeração com o comando: SELECT numero FROM NUMERACAO WHERE doc='STK'. Depois incremento o numero e executo o comando: UPDATE NUMERACAO SET numero="var_numerolido" WHERE doc='STK'. Depois é só inserir uma linha nova na tabela movimentos em que o número do documento é o numero lido da tabela numeracao.

 

Por vezes quando mais que utilizador está a trabalhar, ao inserir uma linha nova na tabela movimentos, dá o erro "Não é possível inserir chave duplicada no objecto 'MOVIMENTOS'", pois o numero do documento é chave primaria da tabela movimentos. Ao que parece é que quando um PC lê o numero da tabela numeracao e antes de fazer update com o novo numero, um outro PC lê o mesmo numero da tabela numeracao, ao escrever na tabela movimentos um dos dois PC's irá dar erro pois já existe uma linha com esse numero.

 

Poderei fazer algo para evitar que isto aconteça? É possível bloquear a tabela numeração enquanto um PC lê o numero e faz o update, de modo a que mais nenhum PC consiga ler o numero enquanto a tabela não for actualizada com o novo numero.

 

 

 

Obrigado :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.