[firebase-br] Travar registro no BD
Carlos Magno P Souza
delphimagno em uol.com.br
Sex Jun 5 20:45:36 -03 2009
V. pode criar um campo para sinalizar que aquele registro está em uso. O
SELECT da segunda aplicação deveria ter um WHERE SN_OCUPADO <> 'S',
mas pra funcionar direito tem que usar também o WITH LOCK
----- Original Message -----
From: "Marcelo Moreira" <marcelomoreira.souza em gmail.com>
To: "FireBase" <lista em firebase.com.br>
Sent: Friday, June 05, 2009 8:17 PM
Subject: Re: [firebase-br] Travar registro no BD
João,
Acho que sua sugestao nao vai resolver o problema pois como disse serao
varios aplicativos fazendo a mesma consulta. Entao se eu executar a primeira
e o primeiro registro da tabela ficar travado um outro sistema que fizer o
mesmo select teria que pegar o primeiro registro que nao estivesse travado
ou seja o segundo registro da tabela e um terceiro sistema fazendo o mesmo
select deveria pegar o terceiro registro da tabela que seria o primeiro
destravado.
Tem como resolver isso?
Em 05/06/09, João Dias <jdias.bjsoftware em gmail.com> escreveu:
>
> Basta você mudar o Select para
>
> select
> first( 1 )
> CL.NUMERO,
> C.MENSAGEM
>
> from
> CAMPANHA_LANCAMENTO CL
>
> inner join CAMPANHA C on (CL.ID_CAMPANHA = C.ID_CAMPANHA)
>
> where
> CL.ENVIADO = 'N'
>
> with lock
>
> Cada vez que um Select com trava "With Lock" for executado se outro já o
> tiver sido uma exceção será disparada
>
> espero ter ajudado
>
> --
> João Dias de Carvalho Neto
> jdias.bjsoftware em gmail.com
>
> Quer Artigos de Patterns GOF e Patterns Corporativos com vídeo aula e
> Fontes Demonstrativos?
> vá a http://www.jdiasneto.blogspot.com
>
>
>
> Marcelo Moreira escreveu:
>
>> Pessoal,
>> Boa tarde!
>>
>> Preciso que um determinado registro na tabela seja travado de modo que
>> outro
>> usuario nao tenha acesso ha ele. Vou tentar explicar a situação:
>> O sistema vai fazer o envio de email e os cliente para quem ele deve
>> mandar
>> o emai vai ficar nesta tal tabela. o que acontece é que vao ser mais de
>> um
>> sistema aberto fazendo o envio destes email e o sql que estou usando para
>> pegar sempre o ultimo registro que ainda nao foi enviado o email seria
>> este:
>>
>>
>> select
>> first( 1 )
>> CL.NUMERO,
>> C.MENSAGEM
>>
>> from
>> CAMPANHA_LANCAMENTO CL
>>
>> inner join CAMPANHA C on (CL.ID_CAMPANHA = C.ID_CAMPANHA)
>>
>> where
>> CL.ENVIADO = 'N'
>>
>> ou seja nenhum outro sistema quando fizer o mesmo select nao pode ter
>> acesso
>> a este registro. e depois que o sistema fizer o envio do email eu altero
>> o
>> campo: CL.ENVIADO = 'S'
>>
>> Como eu poderia resolver isto.
>>
>> Obrigado pela atencao.
>>
>> Abraços
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>>
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista