Ir para conteúdo

POWERED BY:

Arquivado

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

AlmirFS

MySQL

Recommended Posts

Bom dia galera...

 

Precido mandar para formulários informações do BD, mais possuo muitos usuarios

Tenho uma tabela com os seguintes campos.

 

COD_CAD, RESULT, NOME, RECIBO, EMIS_D, REF_MES, AGC, VALOR, TIPO_INA, REAPRESENT, TP_ARQUIVO.

 

Preciso lançar estas informações em um form, em fila ordenados pelo maior valor, só que não posso deixar que mais de um usuarios acessem as mesmas informações simutaneamente.

 

Fiquei sabendo de um recurso do MySQL, do qual eu teria que fazer

um controle disto na minha aplicação, o MySQL possui a função GET_LOCK que pode mim ser útil. Eu criaria um GET_LOCK para cada registro,

e assim os outros usuários não conseguiriam pegar o mesmo lock.

Então a minha aplicação, exibiria a mensagem de que o registro já está

sendo utilizado por outra pessoa.

 

 

O meu problema está relacionado a controle de concorrência, portanto eu teria que bloquear os dados durante a inserção para que ninguém os manipule durante a inserção. A sugestão seria fazer o GET_LOCK para fazer este controle, ou seja, eu pegaria um lock para os registros, por exemplo:

 

select get_lock('tabela_id10', 5);

 

Onde tabela_id10, é um identificador único para o registro em questão. Desta forma se alguém tentar dar uma get_lock na mesma string (que identifica o registro), ele não conseguirá e por consequência não fará nenhuma inserção, até que o release_lock('tabela_id10'), seja executado.

 

Mesmo assim não estou conseguindo fazer alguem poderia mim dar uma ajuda ? http://forum.imasters.com.br/public/style_emoticons/default/cry.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido!Irei colocar uma coluna na tabela que indica se o registro está sendo utilizado, e no momento que alguém "utilizar" o registro, marca essa coluna como 1 (então se outra pessoa tentar utilizá-lo pode ser feita a verificação na mesma) e quando a pessoa liberar marca essa coluna como 0, por exemplo.Grato! ^_^

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.