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! :)
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
Curtir tópico
+ 0
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:
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
Isto não permitirá nenhum tipo de edição na tabela até terminar.
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:
brigadão :lol:
Responder
Clique aqui para fazer login e interagir na Comunidade :)