Ich kenne Firebird am ehesten von ein paar Tests mit Flamerobbin.
Muss man da nicht nach einem Create Table auch commiten? Ich weiß es nicht genau auswendig.
Aber DML und DDL werden von verschiedenen Systemen ganz unterschiedlich gehandhabt.
Ein DDL (z.B.) create table macht in Oracle bspw. implizit ein commit.
Letztlich ist es ja auch so, dass in der
DB selbst, also im eigenen Dictionary die Tabellen, Spalten, etc. pp eingetragen werden (müssen). Das geschieht bei Oracle zwar mit autonomen TR, aber trotzdem wird zuvor datentechnisch reiner Tisch gemacht.
Also evtl. musst Du alle DDL zu Anfang mit commit durchführen. Falls
FB Zwischenschritte unterstützt, kannst Du Dir das vielleicht zunutze machen und bei einem Fehler trotzdem bis zum allerersten Anfang zurückrollen.