Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - 编程 » 使用 SQL Anywhere 编程简介 » 在应用程序中使用 SQL » 在应用程序中控制事务

 

游标和事务

通常,执行 COMMIT 时游标会关闭。但此行为也有两个例外:

  • close_on_endtrans 数据库选项被设置为 Off。

  • 游标打开为 WITH HOLD,这是 Open Client 和 JDBC 的缺省值。

如果这两种情况中任何一种为真,那么游标在 COMMIT 时依然打开。

ROLLBACK 和游标

如果事务回退,游标就会关闭,但那些使用 WITH HOLD 打开的游标除外。但是回退后游标的内容并不可靠。

ISO SQL3 标准草案声明:在回退时,所有游标(甚至是那些使用 WITH HOLD 打开的游标)都应关闭。您可以通过将 ansi_close_cursors_on_rollback 选项设置为 On 来获得此行为。

保存点

如果事务回退到保存点,并且如果 ansi_close_cursors_on_rollback 选项为 On,那么所有在 SAVEPOINT 后还处于打开状态的游标(甚至是那些打开为 WITH HOLD 的游标)将关闭。

游标和隔离级别

可以使用 SET OPTION 语句来更改 isolation_level 选项,以在事务期间更改连接的隔离级别。但是,此更改不影响打开的游标。

当 WITH HOLD 子句与快照、语句快照以及只读语句快照隔离级别一起使用时,在快照启动时所提交的所有行的快照是可见的。从在其内打开游标的事务的启动开始,由当前连接所完成的所有修改也是可见的。有关支持的隔离级别的详细信息,请参见隔离级别和一致性isolation_level 选项 [数据库] [兼容性]