游标和锁定

在 Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) 中,游标定义中的 SELECT 语句受限于应用到任何其他 SELECT 语句中的相同事务锁定规则。任何 SELECT 语句(包括游标定义中的 SELECT 语句)所获取的事务锁都由以下因素控制:

  • 为连接所设置的事务隔离级别
  • 在 FROM 子句中指定的任何锁定提示。

只对于基表或索引游标而言,事务隔离级别可能会影响到所获取的锁。

重要事项:
对于 READ COMMITTED 的默认隔离级别,SQL Server Compact Edition 不会在定位或读取数据时获取锁。READ COMMITTED 中的游标要求 Sch-S 锁以保护游标打开时架构的稳定性。如果数据被更改,则采用排他锁。

锁一直持有到同时用于游标和独立 SELECT 语句的当前事务结束为止。

获取锁

尽管对于所获取的事务锁类型而言,游标遵循的规则与独立 SELECT 语句的规则相同,但获取锁的时间却不相同。独立 SELECT 或游标生成的锁始终是在要求行时获取的。对于独立 SELECT,在执行该语句时,会检索所有行。游标会根据游标类型在不同时间检索行:

  • 静态游标会在打开游标时检索整个结果集。这会在打开时锁定结果集的每行。
  • 键集驱动的游标会在打开游标时检索结果集的每行中的键。这会在打开时锁定结果集的每行。
  • 在提取只进游标之前,它们不会检索行。在定位行之前,不会在行上获取锁。

请参阅

概念

游标的类型
选择游标类型
隐式游标转换
更新键集驱动的游标

帮助和信息

获取 SQL Server Compact Edition 帮助