[firebase-br] RES: Criar/Consultar tabela dentro de uma transação
Carlos H. Cantu
listas em warmboot.com.br
Segunda Setembro 8 11:41:16 -03 2025
O problema é que os objetos que vc cria via DDL só são efetivamente "criados"
quando você commita a transação. Como o autocommit está desligado e vc não deu um
commit explicito, o select ainda não vai "ver" a tabela.
Segundo a documentação do FB:
"Chapter 5. Data Definition (DDL) Statements DDL is the data definition language
subset of Firebird’s SQL language. DDL statements are used to create, modify and
delete database objects that have been created by users. When a DDL statement is
committed, the metadata for the object are created, changed or deleted."
[]s
Carlos H. Cantu
eBook Guia de Migração para o FB 5 - www.firebase.com.br/guiafb5.php
www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br
hgc> Bom dia, Carlos!
hgc> Tudo bem?
hgc> Na mensagem inicial preferi não citar o cenário (Firebird 5, Delphi 12.3,
hgc> Firedac)
hgc> FDConnection.Options.AutoCommit := False;
hgc> FDQuery.Connection := FDConnection;
hgc> if not FDQuery.Connection.InTransaction then
hgc> FDQuery.Connection.StarTrasaction;
hgc> try
hgc> FDQuery.Close;
hgc> FDQuery.SQL.Text := 'Create table MINHATABELA ....';
hgc> FDQuery.ExecSQL;
hgc> FDQuery.close;
hgc> FDQuery.SQL.Text := 'Select * from MINHATABELA';
hgc> FDQuery.open;
hgc> If FDQuery.FieldByName('coluna').value = valor then -> aqui diz que a
hgc> tabela MINHATABELA não existe
hgc> begin
hgc> Executa o bloco de comandos
hgc> End;
hgc> FDQuery.Connection.Commit;
hgc> Except
hgc> On e : exception do
hgc> Begin
hgc> FDQuery.Connection.Rollback;
hgc> Raise exception.....
hgc> End;
hgc> End;
hgc> [ ]'s,
hgc> Hélio Oliveira
hgc> -----Mensagem original-----
hgc> De: lista <lista-bounces em firebase.com.br> Em nome de Carlos H. Cantu via
hgc> lista
hgc> Enviada em: segunda-feira, 8 de setembro de 2025 09:03
hgc> Para: FireBase <lista em firebase.com.br>
hgc> Cc: Carlos H. Cantu <listas em warmboot.com.br>
hgc> Assunto: Re: [firebase-br] Criar/Consultar tabela dentro de uma transação
hgc> Poste a sequencia de comandos que vc está executando...
hgc> PS: Não se deve misturar comandos de DDL e DML na mesma transação.
hgc> []s
hgc> Carlos H. Cantu
hgc> eBook Guia de Migração para o FB 5 - www.firebase.com.br/guiafb5.php
hgc> www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br
hvl>> Boa noite, Colegas!
hvl>>
hvl>> Tenho o seguinte cenário... preciso iniciar uma transação, logo
hvl>> após criar uma tabela (dentro de um método qualquer) e depois
hvl>> consultar a tabela criada anteriormente. Isto tudo dentro da mesma
hvl>> transação (StartTransaction/commit ou rollback).
hvl>> Ao tentar fazer o descrito acima, após criar a tabela, na sequência
hvl>> consultar a mesma dentro de outro método recebo uma exceção de que
hvl>> a tabela não existe.
hvl>>
hvl>> Não sei estou equivocado, mais até onde sei eu só não poderia
hvl>> consultar os dados desta tabela caso fosse em outra transação, isto
hvl>> até ser feito o commit da transação anterior que desta forma
hvl>> ficaria disponível para as demais transações.
hvl>>
hvl>> [ ]’s.
hvl>> Hélio Oliveira
hvl>> ______________________________________________
hvl>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
hvl>> Para saber como gerenciar/excluir seu cadastro na lista, use:
hvl>> http://www.firebase.com.br/fb/artigo.php?id=1107
hvl>> Para consultar mensagens antigas:
hvl>> http://www.firebase.com.br/pesquisa_lista.html
hgc> ______________________________________________
hgc> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br Para
hgc> saber como gerenciar/excluir seu cadastro na lista, use:
hgc> http://www.firebase.com.br/fb/artigo.php?id=1107
hgc> Para consultar mensagens antigas:
hgc> http://www.firebase.com.br/pesquisa_lista.html
Mais detalhes sobre a lista de discussão lista