[firebase-br] Travar registro no BD

João Dias jdias.bjsoftware em gmail.com
Sex Jun 5 14:25:47 -03 2009


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
>   






Mais detalhes sobre a lista de discussão lista