Travar inserção de Registro

29/03/2006

0

Pessoal do fórum estou com um probleminha no meu sistema, eu ja tenho q rotina q grava o código (PK) da tabela na hora da gravação, soh q tenho um cálculo de saldo financeiro a ser feito de acordo com essa ordem, a rotina esta(va) funcionando perfeitamente, porém, qdo umas três máquinas pedem a gravação ao mesmo tempo, a rotina naum funciona, constatei q eh por causa do tempo q leva para buscar esse saldo logo depois de pegar o código...

o q eu to querendo saber eh se existe um jeito de eu travar as gravações até eu terminar de gravar um...

to usando, interbase+delphi 7, com sqlclientdataset

quem puder me ajudar eu agradeço! :)


Gilberto Fernandes

Gilberto Fernandes

Responder

Posts

30/03/2006

Thomaz_prg

não sei se o q você quer é a melhor saída, mas enfim...
você pode criar uma tabela com um único campo, por exemplo CONTROLE, onde você indica se a inserção está ou não permitida. Por exemplo, se não estiver permitida, ele tem um valor 0 por exemplo, daí vocÊ retornar uma exception indicando isso. Crie uma trigger para o evento OnBeforeInsert, e verifique o valor do campo:

if ( exists(select controle from tabcontrole where controle = 0) ) then
  exception EXC_PROIB_INS ´Inserção não permitida!´;


isso retornará uma exceção ao sistema quando isto ocorrer. Isto tem alguns fatores contra, como por exemplo, o fato dea luz acabar por exemplo, então o computador que bloqueou a inserção, não conseguirá desfazer esse bloqueio, podendo gerar alguma inconsistência.
Uma outra forma seria vocÊ bloquear a tabela toda

select * from tabela with lock


Isto não permitirá nenhum tipo de edição na tabela até terminar.


Responder

30/03/2006

Gilberto Fernandes

valeu Tomaz, vou dar uma olhada nessa sua primeira sugestão, parece q pode resolver o meu problema

brigadão :lol:


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar