PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Criar e dar os inserts numa tabela na mesma transação #438543

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

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

Aceitar