[firebase-br] Snapshot Table Stability
Rodrigo Pires
digaoblues em hotmail.com
Sex Jul 6 16:35:06 -03 2007
Zeos. Essas propriedades sao do ZConnection
Bem, deve ter algum lugar pra editar as propriedades da transacao.
[]s
>From: "Anticlei Scheid" <cleischeid em yahoo.com.br>
>Reply-To: FireBase <lista em firebase.com.br>
>To: "FireBase" <lista em firebase.com.br>
>Subject: Re: [firebase-br] Snapshot Table Stability
>Date: Fri, 6 Jul 2007 16:28:45 -0300
>
>Oi Rodrigo.
>
>Quais são os componentes de conexão e transação que você usa ?
>Pois o TSqlConnection e o TTransactionDesc não tem esta propriedade
>"Properties".
>
>Obrigado
>
>----- Original Message -----
>From: "Rodrigo Pires" <digaoblues em hotmail.com>
>To: <lista em firebase.com.br>
>Sent: Friday, July 06, 2007 3:58 PM
>Subject: Re: [firebase-br] Snapshot Table Stability
>
>
>eu to fazendo algo parecido...
>Propriedades da transacao:
>
> Properties.Add('isc_tpb_consistency');
> Properties.Add('isc_tpb_protected');
> Properties.Add('isc_tpb_lock_read,'Tabela);
> Properties.Add('isc_tpb_lock_write,Tabela);
>
>[]s
>
>
> >From: "Anticlei Scheid" <cleischeid em yahoo.com.br>
> >Reply-To: FireBase <lista em firebase.com.br>
> >To: "FireBase" <lista em firebase.com.br>
> >Subject: Re: [firebase-br] Snapshot Table Stability
> >Date: Fri, 6 Jul 2007 12:33:45 -0300
> >
> >Obrigado, mas acho que não expliquei direito.
> >Já li documentação sobre transações tanto no site Firebase, o qual sempre
> >que tenho oportunidade elogio por se tratar de uma fonte muito boa para
> >aprender mais e trocar informações, quanto em livros e outras
>documentações
> >que encontro na Internet.
> >Sempre tomo o cuidado de envolver os processos em transações, uso Read
> >Committed e tudo funciona muito bem e sem nenhum problema de concorrência
> >até hoje.
> >Se o saldo em estoque fosse gravado num registro com certeza o problema
>já
> >estaria resolvido, mas o saldo em estoque não é gravado num registro,
> >sempre
> >é calculado somando os movimentos de entrada e subtraindo os movimentos
>de
> >saída ao último fechamento de cada item, ou seja, no banco de dados
> >guardamos dados, não informações, e o saldo atual de estoque é uma
> >informação não um dado, portando não deve ser gravado no banco, por isso
> >usamos a abordagem do cálculo exlicado acima.
> >O que pretendo evitar é que outra transação inclua algum registro de
>saída
> >de um mesmo item em comum às duas transações na tabela de movimentos
>antes
> >que a transação termine, só isso.
> >Já fiz bastante pesquisa antes de perguntar aqui na lista e já li sobre
>uma
> >instrução, que está inclusive na documentação do Interbase também, com a
> >seguinte sintaxe :
> >
> >SET TRANSACTION
> >Starts a transaction and optionally specifies its behavior. Available in
> >SQL, DSQL, and isql.
> >
> >Syntax SET TRANSACTION [NAME transaction]
> >
> >[READ WRITE | READ ONLY]
> >
> >[WAIT | NO WAIT]
> >
> >[[ISOLATION LEVEL] {SNAPSHOT [TABLE STABILITY]
> >
> >| READ COMMITTED [[NO] RECORD_VERSION]}]
> >
> >[RESERVING <reserving_clause>
> >
> >| USING dbhandle [, dbhandle .]];
> >
> ><reserving_clause> = table [, table .]
> >
> >[FOR [SHARED | PROTECTED] {READ | WRITE}] [, <reserving_clause>]
> >
> >Eu só não sei como utilizar, pois fiz alguns testes "chutando" como
> >utilizá-la e não acertei.
> >
> >Obrigado.
> >
> >----- Original Message -----
> >From: "Carlos H. Cantu (TeamFB)" <listas em warmboot.com.br>
> >To: "FireBase" <lista em firebase.com.br>
> >Sent: Friday, July 06, 2007 9:22 AM
> >Subject: Re: [firebase-br] Snapshot Table Stability
> >
> >
> >Vc não precisa usar "table stability" para garantir isso. Qualquer
> >isolamento transacional no firebird impede que 2 transações alterem o
> >mesmo registro ao mesmo tempo.
> >
> >Faça a atualização do estoque através de um trigger, e estará tudo
> >resolvido, mesmo usando Read Commited.
> >
> >Sugiro que vc leia os artigos sobre transações no site da FireBase,
> >para se familiarizar com o assunto.
> >
> >[]s
> >Cantu (Membro do TeamFB - FireBase)
> >http://www.warmboot.com.br
> >FireBase - http://www.FireBase.com.br
> >
> >AS> Bom dia.
> >
> >AS> Obrigado a todos pelas respostas.
> >AS> Talvez eu esteja equivocado em querer usar esta característica então
> >vou
> >AS> explicar com mais detalhe porque achei que preciso.
> >
> >AS> Tenho uma tabela que registra os movimentos físicos de estoque e
>quando
> >AS> executo um despacho físico dos itens de um pedido de vendas tenho que
> >AS> garantir que nenhum outro usuário fará baixas nos mesmos itens até
>que
> >a
> >AS> transação termine.
> >AS> Embora a transação seja muito rápida é possível que dois usuários
> >iniciem
> >AS> transações coincidentes com algum ou alguns itens em comum e como as
> >AS> transações não "enxergam" entre si os registros inseridos por outra
> >AS> transação é possível que o sistema permita baixa de um item que não
> >esteja
> >AS> no estoque, pois seu saldo é calculado sobre os registros de
>movimento,
> >logo
> >AS> o aplicativo pode não bloquear um saldo negativo porque simplesmente
> >não
> >AS> estaria negativo no momento da transação coincidente.
> >AS> Concordo que a probabilidade de acontecer é muito pequena, mas
>existem,
> >AS> então eu queria que ao iniciar uma transação dessas a tabela de
> >movimentos
> >AS> ficasse travada para outras transações até que este primeira
> >terminasse,
> >AS> garantindo 100% o cálculo do saldo no momento.
> >
> >AS> Se alguém puder sugerir uma outra forma agradeço muito.
> >
> >AS> Abraço
> >
> >AS> ----- Original Message -----
> >AS> From: "Carlos H. Cantu (TeamFB)" <listas em warmboot.com.br>
> >AS> To: "FireBase" <lista em firebase.com.br>
> >AS> Sent: Friday, July 06, 2007 7:58 AM
> >AS> Subject: Re: [firebase-br] Snapshot Table Stability
> >
> >
> >AS> Vc define as caracteristicas da transação no momento em que abre ela,
> >AS> e não nas instruções sql (update, insert, etc) que vc vai rodar.
> >
> >AS> Cuidado pois esse tipo de isolamento pode gerar vários deadlocks,
> >AS> dependendo do número de usuários simultâneos que vc tiver. Até hoje
> >AS> nunca precisei usa-la nos meus sistemas.
> >
> >AS> []s
> >AS> Cantu (Membro do TeamFB - FireBase)
> >AS> http://www.warmboot.com.br
> >AS> FireBase - http://www.FireBase.com.br
> >
> >AS>> Boa tarde pessoal.
> >
> >AS>> Li no livro "The Firebird Book" que podemos utilizar em alguns
> >AS>> casos específicos uma característica de concorrência chamada
>"Snapshot
> >AS> Table Stability".
> >AS>> Esta característica será muito útil para uma situação específica
> >AS>> na nossa aplicação, mas não estou conseguindo utilizar as palavras
> >chave
> >AS> :
> >AS>> SNAPSHOT TABLE STABILITY, WAIT, WITH LOCK, [PROTECTED | SHARED]
>{READ
> >|
> >AS> WRITE}
> >AS>> Já busquei no livro e na lista de discussão, mas não consegui
> >AS>> encontrar exemplos de instruções SQL que se utilizem desta
> >AS> característica.
> >
> >AS>> Obrigado
> >AS>> ______________________________________________
> >AS>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> >AS>> Para editar sua configuração na lista, use o endereço
> >AS>> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> >AS>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> >
> >AS> ______________________________________________
> >AS> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> >AS> Para editar sua configuração na lista, use o endereço
> >AS> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> >AS> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> >
> >
> >
> >______________________________________________
> >FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> >Para editar sua configuração na lista, use o endereço
> >http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> >Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> >
> >--
> >No virus found in this incoming message.
> >Checked by AVG Free Edition.
> >Version: 7.5.476 / Virus Database: 269.10.0/886 - Release Date: 4/7/2007
> >13:40
> >
> >
> >
> >______________________________________________
> >FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> >Para editar sua configuração na lista, use o endereço
> >http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> >Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>_________________________________________________________________
>Inscreva-se no novo Windows Live Mail beta e seja um dos primeiros a testar
>as novidades-grátis. Saiba mais:
>http://www.ideas.live.com/programpage.aspx?versionId=5d21c51a-b161-4314-9b0e-4911fb2b2e6d
>
>
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>Para editar sua configuração na lista, use o endereço
>http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
>--
>No virus found in this incoming message.
>Checked by AVG Free Edition.
>Version: 7.5.476 / Virus Database: 269.10.1/888 - Release Date: 6/7/2007
>06:36
>
>
>
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>Para editar sua configuração na lista, use o endereço
>http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>Para consultar mensagens antigas: http://firebase.com.br/pesquisa
_________________________________________________________________
Verificador de Segurança do Windows Live OneCare: combata já vírus e outras
ameaças! http://onecare.live.com/site/pt-br/default.htm
Mais detalhes sobre a lista de discussão lista