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 的用法 » 创建数据库 » 使用事务和隔离级别 » 隔离级别和一致性

 

设置隔离级别

数据库的每个连接都有其自己的隔离级别。此外,数据库也可以为每个用户或组存储一个缺省隔离级别。使用 isolation_level 数据库选项的 PUBLIC 设置可以为整个数据库组设置一个缺省隔离级别。

您也可以用表提示来设置隔离级别,但这是一个高级功能,只应在需要时使用它。有关详细信息,请参见FROM 子句中的 WITH table-hint 一节。

使用 SET OPTION 命令可以更改您的连接的隔离级别,以及与您的用户 ID 相关联的缺省级别。如果有权限,还可以为其他用户或组更改隔离级别。

如果要使用快照隔离,则必须首先为数据库启用快照隔离。

有关启用和设置快照隔离级别的信息,请参见启用快照隔离

♦  为当前用户设置隔离级别
♦  为用户或组设置隔离级别
  1. 以具有 DBA 权限的用户身份连接到数据库。

  2. 在 isolation_level 前加上该组的名称和一个句点,然后执行 SET OPTION 语句。例如,以下命令将把 PUBLIC 组的缺省隔离级别设置为 3。

    SET OPTION PUBLIC.isolation_level = 3;
♦  为当前连接设置隔离级别
缺省隔离级别

连接到数据库时,数据库服务器将按照以下方式确定您的初始隔离级别:

  1. 可以为每个用户和组设置缺省隔离级别。如果您的用户 ID 在数据库中有一个存储的级别,数据库服务器将使用该级别。

  2. 如果没有,数据库服务器将检查您所属的组,直到找到一个级别。所有用户都是特殊组 PUBLIC 的成员。如果之前未找到任何其它设置,SQL Anywhere 将使用指派给该组的级别。

有关用户和组的详细信息,请参见管理用户 ID、特权和权限

有关 SET OPTION 语句语法的详细信息,请参见SET OPTION 语句

有些情况下,可能需要在事务中间更改隔离级别,例如,在只有一个表或多个表需要序列化访问时。有关在事务内更改隔离级别的信息,请参见在事务内更改隔离级别