[firebase-br] LockMode + Firedac

Adilson B. Cápua Jr. juniorcapua em gmail.com
Ter Jun 20 22:36:49 -03 2017


Olá Gladiston! Obrigado pela ajuda!

Lendo com mais calma sobre o Firedac, ele já possui "embutido" um controle
transacional, ou seja, ele mesmo de acordo com o banco se encarrega de
controlar todas as transações ocorridas com as operações efetuadas pelas
querys e/ou tables no objeto conexão.

No entanto, analisando melhor o módulo onde o erro acontecia, percebi que o
problema era com uma Stored Procedure. A mesma era disparada e fazia uma
série de cálculos e atualizava uma tabela. Se dois usuários entrassem no
mesmo registro, então essa SP era executada 2 (e até mais) vezes e como ela
é executada "por fora" do programa (no banco) então não sei porque (e nem
imagino) ocorria o erro. Acho que o próprio objeto TFDStoredProc causava.

Pois então, mesmo o Firedac possuindo esse recurso, nada impede de você
controlar a coisa toda manualmente. E foi o que eu fiz justamente nesse
módulo. Coloquei o TFDTransaction e configurei o cara pra trabalhar somente
com aquela SP e outras querys que faziam update e o problema foi resolvido!

De fato, o problema estava no "ter deixado default" ou como você me contou
que os portugueses dizem: falhas por omissão ou valor predefinido por
negligência!

Mais uma vez, meu muito obrigado! Você me fez ir na documentação do Firedac
e pesquisar. Geralmente a gente apenas vai usando o default do que vê pela
internet da vida, sem saber o porque daquilo!

Um abraço!

_____________________________________
  Adilson Bragança Cápua Jr.
  Linhares - ES                            Brasil

  Mail:* juniorcapua em me.com <juniorcapua em me.com>*
*          juniorcapua em gmail.com <juniorcapua em gmail.com>*
*          juniorcapua em yahoo.com.br <juniorcapua em yahoo.com.br>*
  Messenger:* juniorcapua em live.com <juniorcapua em live.com>*
  Skype:* dellas_capua*
  Blogger: http://dellasnoites.blogspot.com/
_____________________________________
"Save a tree! Send an e-mail!"

Em 20 de junho de 2017 11:46, Gladiston Santana <gladiston em vidy.com.br>
escreveu:

> Outro programa usando o Firebird em database diferente não afetaria seu
> programa.
>
> O que chamamos de defaults, os portugueses chamam corretamente de falhas
> por omissão ou valor predefinido por negligência. Eu não gosto dos termos
> portugueses para as palavras (rato, ecrã, fato,... doi nos nervos), mas
> aqui eles parecem representar bem o que a palavra realmente quer dizer.
> Usar um valor padrão é perigoso porque numa atualização futura ou contexto
> diferente esse "padrão" muda e o comportamento do seu programa também.
>
> O Lock tem mais a ver com o nivel de isolamento da transação do que com a
> conexão, acho que talvez por não usar um componente de transação e setar
> suas propriedades, o FDConnection tá assumindo um monte de "padrões".
> Sugiro que você ponha um componente de transacionamento e sete seus
> parametros manualmente não deixando nada por omissão, mas também entendendo
> corretamente o nivel de isolamento de que necessita, tem artigos neste site
> que falam apenas disso.
>
> Um abraço e boa sorte.
> ______________________________________________
> 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://www.firebase.com.br/
> pesquisa_lista.html
>



Mais detalhes sobre a lista de discussão lista