Transaktionssteuerung

Sie können mit der Zielstruktur-Knoten-Eigenschaft Transaktionssteuerung steuern, wann SQL-Anweisungen in die Datenbank geschrieben werden wird. Folgende Einstellungen sind dort möglich. Wichtiger Hinweis: Beachten Sie bitte, dass wenn Sie mehrere Knoten mit dem selben Datenbank-Alias haben und ein Commit durch einen Knoten ausgelöst wurde, immer ein Commit für alle offenen SQL-Anweisungen dieses Datenbank-Aliases ausgeführt werden. Es gewinnt also immer der erste Commit-Zeitpunkt für einen Datenbank-Alias. Haben Sie also erst einen Knoten mit Transaktionssteuerung Nach Datenblatt und danach einen Knoten mit Transaktionssteuerung Alle offenen Statements, dann löst der Commit durch den zweiten Knoten auch einen Commit für den ersten Knoten aus und es wird nicht gewartet bis nach dem Erzeugen des Datenblatts. Wenn die Knoten unterschiedliche Datenbank-Aliase haben, werden aber unterschiedliche Commit-Zeitpunkte beachtet.


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, wird für den betroffenen Datenbank-Alias einen Rollback ausgelöst.

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, wird für den betroffenen Datenbank-Alias einen Rollback ausgelöst.

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

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, wird erst nach dem letzten Knoten des Zielbaumes ein Commit an alle beteiligten Datenbank-Aliase ausgelöst (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.

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.