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:
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)