SQL Anywhere erwartet, dass Sie Ihre Befehle in Transaktionen zusammenfassen. Wenn Sie eine solche Transaktion festschreiben, dann werden die Änderungen in der Datenbank permanent gespeichert. Wenn Sie Daten ändern, werden Ihre Änderungen im Transaktionslog aufgezeichnet und erst dann dauerhaft gemacht, wenn Sie den COMMIT-Befehl eingeben.
Transaktionen beginnen mit einem der folgenden Ereignisse:
Erste Anweisung nach erfolgter Verbindung mit einer Datenbank
Erste Anweisung nach dem Ende einer Transaktion
Transaktionen werden mit einem der folgenden Ereignisse abgeschlossen:
Eine COMMIT-Anweisung schreibt die Änderungen in der Datenbank fest.
Eine ROLLBACK-Anweisung macht alle durch die Transaktionen durchgeführten Änderungen rückgängig.
Eine Anweisung wird ausgeführt und schreibt gleichzeitig auch alle Änderungen automatisch fest: Es handelt sich dabei um Definitionsbefehle für Daten, wie zum Beispiel ALTER, CREATE, COMMENT und DROP.
Durch die Unterbrechung der Verbindung zur Datenbank wird ein indirektes Zurücksetzen ausgeführt.
ODBC und JDBC haben eine Autocommit-Einstellung, die COMMIT nach jeder Anweisung erzwingt. Standardmäßig erfordern ODBC und JDBC, dass Autocommit aktiviert und jede Anweisung eine einzelne Transaktion ist. Wenn Sie die Möglichkeiten von Transaktionen nutzen wollen, müssen Sie Autocommit ausschalten.
Weitere Hinweise zu Autocommit finden Sie unter Automatisch oder manuell festschreiben.
Wenn die Datenbankoption "chained" auf "Off" gesetzt wird, hat dies ähnliche Auswirkungen wie das Erzwingen von "Autocommit" nach jeder Anweisung. Standardmäßig ist "chained" bei Verbindungen, die jConnect- oder Open Client-Anwendungen benutzen, auf "Off" gesetzt.
Weitere Hinweise finden Sie unter Automatisch oder manuell festschreiben, and chained-Option [Kompatibilität].
Interactive SQL stellt zwei Optionen zur Verfügung, mit denen Sie steuern können, wann und wie Transaktionen beendet werden:
Wenn Sie die Option "auto_commit" auf "On" setzen, schreibt Interactive SQL automatisch die Ergebnisse jeder erfolgreichen Anweisung fest und führt nach jeder fehlerhaften Anweisung automatisch ein ROLLBACK durch. Weitere Hinweise finden Sie unter auto_commit-Option [Interactive SQL].
Die Einstellung der Option "commit_on_exit" legt fest, was mit den nicht festgeschriebenen Änderungen passiert, wenn Sie Interactive SQL beenden. Wird diese Option auf "On" gestellt (Standardwert), so führt Interactive SQL einen COMMIT-Befehl aus. Ansonsten werden Ihre nicht festgeschriebenen Änderungen mit einem ROLLBACK-Befehl ungeschehen gemacht. Weitere Hinweise finden Sie unter commit_on_exit-Option [Interactive SQL].
In der Standardeinstellung arbeitet ODBC im Autocommit-Modus. Auch wenn Sie in Interactive SQL die Option "auto_commit" auf "Off" gesetzt haben, wird die Interactive SQL-Einstellung von der ODBC-Einstellung überschrieben. Mit dem Verbindungsattribut SQL_ATTR_AUTOCOMMIT können Sie diese ODBC-Einstellung ändern. ODBC-Autocommit ist von der Option "chained" unabhängig.
SQL Anywhere unterstützt auch Transact-SQL-Befehle, wie zum Beispiel BEGIN TRANSACTION, um die Kompatibilität mit Sybase Adaptive Server Enterprise zu gewährleisten. Weitere Hinweise finden Sie unter Transact-SQL-Kompatibilität.
Die Datenbankeigenschaft "TransactionStartTime" gibt die Uhrzeit zurück, zu der die Datenbank erstmals nach einem COMMIT oder ROLLBACK geändert wurde. Sie können diese Eigenschaft verwenden, um die Startzeit der frühesten Transaktion für alle aktiven Verbindungen zu ermitteln. Zum Beispiel:
BEGIN DECLARE connid int; DECLARE earliest char(50); DECLARE connstart char(50); SET connid=next_connection(null); SET earliest = NULL; lp: LOOP IF connid IS NULL THEN LEAVE lp END IF; SET connstart = CONNECTION_PROPERTY('TransactionStartTime',connid); IF connstart <> '' THEN IF earliest IS NULL OR CAST(connstart AS TIMESTAMP) < CAST(earliest AS TIMESTAMP) THEN SET earliest = connstart; END IF; END IF; SET connid=next_connection(connid); END LOOP; SELECT earliest END |
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |