Im Allgemeinen wird ein Cursor geschlossen, wenn ein COMMIT ausgeführt wird. Es gibt zwei Ausnahmen für dieses Verhalten.
Die Datenbankoption close_on_endtrans ist auf Off gesetzt.
Ein Cursor wird mit WITH HOLD geöffnet, was der Standard bei Open Client und JDBC ist.
Trifft einer dieser beiden Fälle zu, bleibt der Cursor bei COMMIT geöffnet.
Beim Zurücksetzen einer Transaktion wird der Cursor geschlossen, außer wenn er mit WITH HOLD geöffnet wurde. Dem Inhalt eines Cursors können Sie nach einem Zurücksetzen nicht vertrauen.
Der projektierte ISO SQL3-Standard legt fest, dass bei einem Zurücksetzen alle Cursor geschlossen werden sollen. Sie können dieses Verhalten erzwingen, indem Sie die Option ansi_close_cursors_on_rollback auf On setzen.
Wenn eine Transaktion bis zu einem Savepoint zurückgesetzt wird und ansi_close_cursors_on_rollback auf On gesetzt ist, wird jeder nach dem SAVEPOINT geöffnete Cursor geschlossen (sogar die Cursor, die mit WITH HOLD geöffnet wurden).
Sie können die Isolationsstufe für eine Verbindung während einer Transaktion setzen, indem Sie die Anweisung SET OPTION verwenden, um die Option isolation_level zu ändern. Diese Änderung wirkt sich jedoch nicht auf geöffnete Cursor aus.
Ein Snapshot aller Zeilen, die zur Snapshot-Startzeit festgeschrieben sind, ist sichtbar, wenn die WITH HOLD-Klausel mit den Isolationsstufen snapshot, statement-snapshot und readonly-statement-snapshot verwendet wird. Ebenfalls sichtbar sind alle Änderungen, die von der aktuellen Verbindung seit dem Start der Transaktion, innerhalb der der Cursor geöffnet war, abgeschlossen wurden. Weitere Hinweise zu unterstützten Isolationsstufen finden Sie unter Isolationsstufen und Konsistenz und isolation_level-Option [Datenbank] [Kompatibilität].
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 |