Jetzt wundert mich nur der Hinweis aus der Firebird Hilfe, der sagt, dass ich keine DDL strings mit EXECUTE STATEMENT ausführen soll. Warum nicht? Ist das hier schlimm?
Zitat:
Although this form of EXECUTE STATEMENT can also be used with all kinds of DDL strings (except CREATE/DROP DATABASE), it is generally very, very unwise to use this trick in order to circumvent the no-DDL rule in PSQL.
naja, hängt unter anderem mit transaktionseinstellungen zusammen und was du damit vorhast. Im Metadata Transaction mode könnte kann zum beispiel eine primary key constraint damit löschen, die dann aber wegen deiner metadata transaction einstellung isc_tbp_wait warten könnte, das irgendwann mal der pk von niemandem mehr benutzt wird, was aber evtl niemals passieren wird und du damit die gesamte Datenbank in einer Zustand versetzt der dein statement warten lässt, alle anderen clients aber schon mal beim schreiben blockiert.
Neue objekte damit erzeugen ist eigentlich nie ein problem, vorhanden ändern oder sogar löschen kann auf einer Live Datenbank schon blöde neben effekte haben. Wenn du aber exklusiven zugriff hast zB durch shutdown ist das gar kein problem das so zu machen, benutze ich ähnlich seit jahren und hab selten Problem, mach damit aber auch ganz selten mal drop