BLOQUEAR TABELA NO MYSQL EM UMA ESTACAO

ALVAROVB2009 02/10/2009 12:49:06
#324257
Galera boa tarde.
Gostaria de saber como que eu posso bloquear a tabela em uma estação enquanto o usuário tiver utilizando.
Na prática é assim:
Tenho um nº de coleta e que ele será atualizado na medida que forem impressas as coletas e esse nº não pode se repetir, e vários usuários podem fazer a impressão.
Quando o usuário vai imprimir o sistema chega o nº que esta nos parametros e coloca na coleta que está sendo impressa e vai somando um a cada impressão.
O usuário pode selecionar uma ou várias coletas a serem impressas simultaneamente e nesse segundo caso, eu queria deixar a tabela travada até a última coleta ser impressa, para não ter o problema de ter nº em duplicidade.

Acho que consegui explicar o que desejo, será que alguém pdoe me ajudar com essa dúvida?
Abraço a todos
MAYCONIGHT 02/10/2009 14:28:42
#324262
Boa tarde alvaro,

aqui, pelo que eu entendi, se eu imprimir, vai gerar um numero de coleta, vc imprimi a mesma coleta e gera um novo numero (não pode repetir, entao esta correto), mas.... se vc manda imprimir mais de uma coleta, por exemplo 3 coletas, todas saem com o mesmo numero, isso?

bom, eu faria o seguinte, faria uma contagem dos registros selecionados ( recordcount ), verificaria qual foi a ultima coleta lançada, faria um loop for acrescentando + 1 a este numero dando um update.

qualquer coisa posta ae sua codificação. abraços.
ALVAROVB2009 02/10/2009 15:03:57
#324265
MAYCONIGHT Obrigado pelo retorno
O problema não o fato de ir somando e sim o problema é de não deixar um segundou ou terceiro usuário na rede emitir a coleta, enquanto o primeiro usuário não terminar de emitir a(s) coleta(s) selecionada(s).

A partir do momento que o primeiro usuário terminar a impressão, o sistema libera a tabela já com o nº atualizado da coleta, para os outros usuários, para imprimirem.

Da forma que você colocou, com certeza em um ou mais momentos terão duas ou mais coletas com o mesmo nº e travando a tabela não tem jeito
FGSANTOS 02/10/2009 21:31:10
#324292
Resposta escolhida
o comando do mysql para bloquear a tabela é:

lock table nomedatabela

após finalizar você tem que liberar:

unlock table nomedatabela

mais detalhes no link: http://dev.mysql.com/doc/refman/5.0/en/lock-tables.html
ALVAROVB2009 05/10/2009 13:52:56
#324460
FGSANTOS Obrigado pelo retorno, era o que eu estava precisando mesmo
vlw abraço
Tópico encerrado , respostas não são mais permitidas