Transaktionssteuerung


images/download/thumbnails/44946811/arrow_up-version-1-modificationdate-1583803483037-api-v2.png Einführung: Eine Beschreibung dieser Phase finden Sie im Abschnitt Phase 4 (Einführung).


images/download/thumbnails/44946811/image2020-3-16_16-18-52-version-1-modificationdate-1584328733247-api-v2.png

Normalerweise werden sämtliche SQL-Anweisungen in einer Transaktion in die Datenbank(en) geschrieben. Das Transaktionsverhalten kann jedoch geändert werden, in dem die Zielstruktur-Knoten-Eigenschaft Transaktionssteuerung eingestellt wird. Siehe hierzu Abschnitt Phase 4 - SQL-Ausführung. Folgende Einstellungen sind dort möglich.


Nach Datenblatt

Beim Verlassen des Knotens wird kein Commit an die Datenbank ausgelöst. Dies ist die Standardeinstellung. Sind alle Knoten der Zielstruktur mit diesem Wert eingestellt, löst Lobster_data erst nach dem letzten Knoten des Zielbaumes einen Commit an alle beteiligten Datenbank-Aliase aus (für jedes Datenblatt). Die SQL-Anweisungen des Knotens werden commitet, wenn ein Vaterknoten einen Commit auslöst. Mit dieser Einstellung wird mindestens ein Commit pro Datenblatt an die Datenbank ausgelöst.

Alle offenen Statements

Beim Verlassen des Knotens wird für alle Datenbank-Aliase mit offenen Transaktionen ein Commit ausgelöst. Diese Einstellung ist z. B. sinnvoll, um auf Datenblatt-Ebene alle erstellten SQL-Anweisungen abzuschließen. Kann der Commit von der Datenbank nicht durchgeführt werden, löst Lobster_data für den betroffenen Datenbank-Alias einen Rollback aus.

Hinweis: Es handelt sich nicht um einen Zwei-Phasen-Commit! Ein durchgeführter Commit auf einem Datenbank-Alias kann nicht mehr zurückgenommen werden!

Hinweis: Durch das Betreten eines Knotens mit dieser Einstellung hier, werden bereits geöffnete Transaktionen nicht abgeschlossen, sondern die vorhandenen Transaktionen verwendet.

Nur DB Alias dieses Knotens

Dies ist die gebräuchlichste Einstellung für eine Commit-Steuerung. Beim Verlassen des Knotens wird für den zugehörigen Datenbank-Alias ein Commit ausgelöst. Kann der Commit von der Datenbank nicht ausgeführt werden, löst Lobster_data für den betroffenen Datenbank-Alias einen Rollback aus.

Hinweis: Durch das Betreten eines Knotens mit dieser Einstellung hier, werden bereits geöffneten Transaktionen nicht abgeschlossen, sondern die vorhandenen Transaktionen verwendet.

Nach allen Datenblättern

Mit dieser Einstellung hier wird erst ein Commit nach der Abarbeitung des letzten Datenblattes an die Datenbank gesendet. Damit landen entweder alle Daten des Knotens in der Datenbank oder keine.

Hinweis: Durch das Betreten eines Knotens mit dieser Einstellung hier, werden bereits geöffneten Transaktionen nicht abgeschlossen, sondern die vorhandenen Transaktionen verwendet.

Im Antwortweg

Das Transaktionsverhalten wird über eigene Klassen in Phase 6 gesteuert. Siehe Abschnitte CommitSqlSessionResponse und RollbackSqlSessionResponse.