Hallo!
Ist dies wirklich so bei Firebird? Ich habe hier leider kein Firebird im Zugriff aber bei DB2 und Oracle funktioniert z. B. folgendes mit Delphi 2006:
Delphi-Quellcode:
var
ta: TTransactionDesc;
begin
try
SQLConnection1.Connected := True;
try
ta.TransactionID := 1;
ta.GlobalID := 0;
ta.IsolationLevel := xilREADCOMMITTED;
SQLConnection1.StartTransaction(ta);
SQLQuery1.SQL.Text := 'create table TEMP.TEST (id integer)';
SQLQuery1.ExecSQL;
SQLQuery1.SQL.Text := 'insert into TEMP.TEST (ID) values (1)';
SQLQuery1.ExecSQL;
SQLConnection1.Commit(ta);
except
SQLConnection1.Rollback(ta);
raise;
end;
finally
SQLConnection1.Connected := False;
end;
Was nach meinem Verständnis einer Transaktion auch vollkommen korrekt ist.
Denn eigentlich sollte es so sein, dass man innerhalb einer Transaktion auch alle Änderungen (insert, update, delete, create, drop etc.) der eigenen Tansaktion auch sehen sollte.
Gibt es da bei Firebird vielleicht Konfigurationsoptionen? Oder anderen IsolationLevel xilDIRTYREAD probieren?
Ansonsten Tabellen erzeugen, Daten einfügen. Sollte dabei etwas schief gehen wieder ein drop table.
Grüße