Criar e dar os inserts numa tabela na mesma transação

01/04/2013

0

Boa tarde a todos!

Como eu poderia estruturar uma transação para criar e dar os inserts numa tabela na mesma transação??
Estou fazendo:
var
  TID: TTransactionDesc;
begin
  TID.TransactionID := 1;
  TID.IsolationLevel:= xilREADCOMMITTED;
  Dm.MyDB.StartTransaction(TID);

  try
    Dm.Sis_ExecuteSql.Close;
    Dm.Sis_ExecuteSql.SQL.Clear;
    Dm.Sis_ExecuteSql.SQL.Text := 'CREATE TABLE TESTE (PORC_ID INTEGER NOT NULL, PORC_EXIBEESTOQUEZERADO SMALLINT DEFAULT 0 NOT NULL, PORC_ALTERARVALORUNITARIO SMALLINT DEFAULT 0 NOT NULL);';
    Dm.Sis_ExecuteSql.ExecSQL();

    Dm.Sis_ExecuteSql.Close;
    Dm.Sis_ExecuteSql.SQL.Clear;
    Dm.Sis_ExecuteSql.SQL.Text := ' INSERT INTO TESTE VALUES(1,0,0)';
    Dm.Sis_ExecuteSql.ExecSQL();
    Dm.MyDB.commit(TID);
  except
    MessageDlg('Falha ao definir os parâmetros. Comunique ao suporte', mtError, [mbOK], 0);
    Dm.MyDB.Rollback(TID);
  end;
end;


Mas desta forma, me retorna que a tabela não existe na hora do insert! Se no ibexpert eu fizer:
   CREATE TABLE TESTE (PORC_ID INTEGER NOT NULL, PORC_EXIBEESTOQUEZERADO SMALLINT DEFAULT 0 NOT NULL, PORC_ALTERARVALORUNITARIO SMALLINT DEFAULT 0 NOT NULL);
   INSERT INTO TESTE VALUES(1,0,0);
   commit work; 

Funciona normal! Qual a diferença entre a transação que criei e a do IBExpert? O Ibexpert criar uma transação para cada linha do script acima?? Como estruturar para que haja uma única transação??

Obrigado!
Vitor Junior

Vitor Junior

Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar