Obrigado pelas dicas
Nos dois exemplos passados, para o meu caso o mais interessante seria
o exemplo 1, onde é usado o comando "do transaction", pois quero que
os registro que o usuário estiver consultando/alterando, não sejam
acessados por outro usuário ao mesmo tempo.
Mas tenho mais uma dúvida: em relação ao índice, estou utilizando um
índice que compreende data de vencimento e código do estabelecimento.
Dentro do for each faço as verificações de espécie, série, valor
(estes dados são fornecidos pelo usuário). Se eu amarrar estes dados
no for each posso ter queda de performance? por exemplo:
do transaction:
for each tabela use-index data no-lock where dt-venc >= data1 and
dt-venc <= data2 and
cod-estab >= x and cod-estab <= y and
cod-esp >= a and cod-esp <= b and
serie >= c and serie <= d and
valor >= e and valor <= f:
/*comandos*/
end.
end.
Neste caso, como o índice da tabela compreende os campos dt-venc e cod-
estab, a pesquisa ficaria mais lenta?
Ao invés de fazer as verificações dentro do for each, eu verificarei
direto na cláusula where do for each.
Obrigado
On 2 out, 08:09, "MARCOS BATISTA" <
BATI...@agraria.com.br> wrote:
> Isto mesmo, o Progress realiza o lock de registro, não da tabela como um todo.Mas vale ressaltar que o lock ocorre para o registros lidos para a shred-memory do servidor, ou melhor, os registros que o "motor" do banco de dados leu para te dar a resposta, ou seja, se o índice usado não for adequado, você corre o risco da tabela toda ser lida, mas se usar o índice adequado, isto não ocorrerá.
>
> Assim, um CAN-FIND com uma cláusula de where mau elaborada em relação aos índices disponíveis, pode ler todas a tabela para retornar um YES/NO dizendo se o registro que você pediu existe ou não..
> O Manual anexo pode ajudar neste sentido.
> Este manual foi baixado da Intenet, apenas fizemos uns ajustes nele.
>
> sds
> Batista>>>
wander...@gmail.com 01/10/2008 22:46:51 >>>
> 2008/10/1 jhonson <
jonas.ne...@gmail.com>
>
>
>
>
>
>
>
> > Quando vou dar um for each em uma tabela: for each tit-ap no-lock
> > where....., insiro os parâmetros que desejo com a opção no-lock.
>
> > Imagine a seguinte situação: Várias pessoas utilizam um determinado
> > programa, só que por faixa de valores, por exemplo, uma pessoa
> > acessará títulos de R$ 1,00 a R$ 1.000,00, outra pessoa acessará
> > títulos na faixa de R$ 1.001,00 a R$ 5.000,00, e assim sucessivamente.
> > Se eu usar o comando exclusive-lock no for each, toda a tabela ficará
> > bloqueada para outros usuários que desejarem utilizá-la.
> > Há como eu bloquear apenas os títulos de acordo com a faixa de valores
> > que o usuário está acessando? No exemplo que citei, o usuário que
> > estiver alterando os títulos na faixa de valores de R$ 1,00 a R$
> > 1.000,00, bloquear os outros usuários que tentem acessar os títulos
> > somente nesta faixa de valores?
> > Isso é possível?
>
> --
> Abraço,
>
> Wanderley.
>
> "Nada baixa mais o nível da conversa do que elevar a voz"
>
> Stanley Horowitz
>
> manual de performance progress.doc
> 490KExibirDownload- Ocultar texto entre aspas -
>
> - Mostrar texto entre aspas -