IBM Buch

Verwaltung und Programmierung für OS/400

Verwalten von Transaktionen in einer Net.Data-Anwendung

Wenn Sie den Inhalt einer Datenbank mit INSERT-, DELETE- oder UPDATE-Anweisungen ändern, werden diese Änderungen erst festgeschrieben, nachdem die Datenbank eine COMMIT-Anweisung von Net.Data empfangen hat. Wenn ein Fehler auftritt, sendet Net.Data eine ROLLBACK-Anweisung an die Datenbank, die alle Änderungen seit der letzten COMMIT-Operation zurücknimmt.

Wie Net.Data die COMMIT-Anweisung und die etwaige ROLLBACK-Anweisung sendet, hängt davon ab, wie Sie TRANSACTION_SCOPE festlegen und ob Sie die COMMIT-Anweisung explizit im Makro angeben. Zulässige Werte für TRANSACTION_SCOPE sind MULTIPLE und SINGLE.

MULTIPLE

Gibt an, daß Net.Data alle SQL-Anweisungen vor dem Absetzen einer COMMIT- und etwaigen ROLLBACK-Anweisung ausführt. Net.Data sendet die COMMIT-Anweisung am Ende der Anforderung, und wenn jede SQL-Anweisung erfolgreich abgesetzt wird, schreibt die COMMIT-Anweisung alle Änderungen in der Datenbank fest. Wenn durch eine der Anweisungen ein Fehler zurückgegeben wird, setzt Net.Data eine ROLLBACK-Anweisung ab, die die Datenbank auf ihren ursprünglichen Status zurücksetzt. MULTIPLE ist der Standardwert, wenn TRANSACTION_SCOPE nicht festgelegt wird.

Sie aktivieren diese COMMIT-Methode, indem Sie TRANSACTION_SCOPE auf MULTIPLE setzen.

Beispiel:

@DTW_ASSIGN(TRANSACTION_SCOPE,"MULTIPLE")
 

SINGLE

Gibt an, daß Net.Data nach jeder erfolgreichen SQL-Anweisung eine COMMIT-Anweisung absetzt. Wenn die SQL-Anweisung einen Fehler zurückgibt, wird eine ROLLBACK-Anweisung abgesetzt. Die Angabe SINGLE für TRANSACTION_SCOPE stellt eine sofortige Datenbankänderung sicher. Allerdings kann eine Änderung später mit Hilfe einer ROLLBACK-Anweisung nicht widerrufen werden.

Sie aktivieren diese COMMIT-Methode, indem Sie TRANSACTION_SCOPE auf SINGLE setzen. Beispiel:

@DTW_ASSIGN(TRANSACTION_SCOPE,"SINGLE")
 

Sie können mit der SQL-Anweisung COMMIT am Ende jeder beliebigen SQL-Anweisung in Ihrem Makro eine COMMIT-Anweisung absetzen. Wenn Sie als Anwendungsentwickler die Standardeinstellung MULTIPLE für TRANSACTION_SCOPE beibehalten und wenn Sie COMMIT-Anweisungen am Ende der Anweisungsgruppen absetzen, die als Transaktion in Frage kommen, haben Sie volle Kontrolle über das COMMIT- und ROLLBACK-Verhalten in Ihrer Anwendung.

Zum Absetzen einer SQL-Anweisung COMMIT können Sie eine Funktion definieren, die Sie an einem beliebigen Punkt in Ihrem HTML-Block aufrufen können:

%FUNCTION(DTW_SQL) user_commit() {
  commit
%}
 
...
 
%HTML {
  ...
  @user_commit()
  ...
%}
 


[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]