Array
(
)

Select com lock

Rafael Brandão
|
MVP
    09 mai 2013

Boa noite.
Gostaria de uma dica ou ajuda para fazer um select em uma tabela e o registro encontrado tem que ficar em lock, pois na sequência farei um update nela.
Este lock é necessário pois é uma tabela onde muitos usuários acessam dentro de um callcenter e cada um só pode pegar 1 linha por vez.
Agradeço previamente a atenção e boa vontade!!

Alex Lekao
   - 15 mai 2013

Ola Boa tarde!!!

Nao sei bem se isso eh possivel.

mas dependendo da sua necessidade e do tempo que isso demoraria, vc poderia iniciar uma transaction e fazer as operacoes, e qdo terminasse seria somente finalizar a transacao, normalmente qdo isso eh feito todos os usuarios do banco vao entrar em uma fila de espera, entao eh recomendavel que isso seja muito rapido para que nao fiquem muito tempo aguardando.

Se nao me engano os comandos sao Begin Tran e qdo terminar, end tran.

Como disse nao tenho certeza pq praticamente nao uso.

Talvez resolva por hora o que precisa fazer.

Espero ter ajudado.

Abraco.

Alex - Lekao

Rafael Brandão
|
MVP
    16 mai 2013

Boa tarde Alex.
Na verdade eu já estou usando o begin transaction.
Estou usando o begin transation com um CTE dentro para montar uma fila.
Quando ocorre o script do CTE o primeiro código da tabela é atrelado a 1 usuário e após isso a transação é finalizada.
O que eu esperava que acontecesse é que o próximo usuário que estava em lock pegasse o próximo código e assim sucessivamente, porém se há 2 usuários em lock, quando a primeira transação finaliza os 2 usuários em lock pegam o mesmo registro, ou seja, o código da tabela fica atrelado a 2 usuários.

De qualquer forma, obrigado pela ajuda, se conseguir resolver eu posto aqui.