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

01/04/2013

2

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!
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar