[firebase-br] Controle transacional DUVIDA

Luis luisfirevb em gmail.com
Dom Jun 28 11:29:39 -03 2009


Bom dia pessoal.

Desculpe a pergunta de iniciante, mas estava lendo/estudando e tenho uma
grande dúvida sobre transações Firebird.

Como dito aqui na lista: " ...mesmo em um SELECT simples (apenas de
consulta) é preciso COMITAR para não ficar TRANSACTION pendente." Então como
funciona no Firebird?

read-commited
read-only
auto-commit
Isolation
ReadOnly
AutoCommit

Programo em Visual Basic 6 + ADO e estou estudando o VB.Net e ADO.NET para
migração do meu sistema, que também passará de MS Access para Firebird e MS
SQL Server.

No VB 6 faço assim por exemplo de consulta simples e para qualquer acesso ao
DB:

310 If Conectar Then	'# Verifica se há conexão aberta e conexão caso
contrário
320   cn.BeginTrans  '# inicio uma transação (só conheço esse tipo)
330     bTransIniciada = True  '# marco uma variável para controle interno
que existe uma transação caso ocorra erro
340     Set rs1 = New ADODB.Recordset	'# Crio novo objeto recordset
350     rs1.CursorLocation = adUseClient	'# seto ele com cursos no
cliente e não no servidor
380     rs1.Open "SELECT campo FROM tabela WHERE condicao;", cn,
adOpenStatic, adLockReadOnly, adCmdTableDirect
390   cn.CommitTrans
400   bTransIniciada = False
410 End If
                      
420 rs1.ActiveConnection = Nothing	'# finalize conexão do recordset
para uso local          
540 rs1.Close	'# fecho recordset

Nota: A transação aqui é feita pelo ADO (BeginTrans, commitTrans e
RollbackTrans = se der erro para desfazer tudo)

O motivo da dúvida é que parte das explicações aqui são referentes a Delphi
e componentes para uso com ele, então gostaria de saber como funciona uma
transação no Firebird.

Obrigado pela ajuda.
Luis





Mais detalhes sobre a lista de discussão lista