Hallo,
SP hatte ich ketzerisch genommen
Wir benutzen
if then auf der Client-Seite.
Delphi-Quellcode:
DB.StartTransaction;
Proc1;
if Bla
then
begin
Proc2;
Proc4;
end;
DB.Commit;
Bei Firebird spielt es schon eine Rolle, ob die
DB bei jedem
SQL-Befehl eine automatische Transaktion startet oder wir das per Client machen. Das hat mit der MGA (multi generation architecture) zu tun.
Es gibt aktive Transaktionen, die
FB berücksichtigen muss.
Je mehr offen sind, desto mehr muss die
DB sich quälen.
Deshalb auch immer der Hinweis, keine lange laufenden Transaktionen benutzen ala:
- Fenster öffnen (nein, mache wieder zu! -> ist kalt, ein Delphi-Fenster meinte ich
)
- Transaktion starten
- auf Nutzer-Eingabe warten
- 30 Minuten Pause, Mittag
- Insert/Update
- Commit
Machen das 2 Nutzer und 20 andere hämmern fleißig weiter Daten ein, bleibt diese eine Transaktion offen.