Criar e dar os inserts numa tabela na mesma transação
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:
Mas desta forma, me retorna que a tabela não existe na hora do insert! Se no ibexpert eu fizer:
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!
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
Curtidas 0