可滚动游标和事务隔离
下表列出了控制更改可见性的因素。
更改发起因素: | 可见性决定因素: |
---|---|
游标 | 游标类型、游标实现 |
同一事务中的其他语句 | 游标类型 |
其他事务中的语句 | 游标类型、事务隔离级别 |
这些因素如下图所示。
下表汇总了每个游标类型能够检测自身、自身事务中的其他操作和其他事务所做的更改的能力。 后两种更改的可见性取决于游标类型和包含游标的事务的隔离级别。
游标类型\操作 | Self | Own Txn |
Othr Txn (RU[a]) |
Othr Txn (RC[a]) |
Othr Txn (RR[a]) |
Othr Txn (S[a]) |
---|---|---|---|---|---|---|
静态 | ||||||
Insert | Maybe[b] | 否 | No | No | No | 否 |
更新 | Maybe[b] | 否 | No | No | No | 否 |
删除 | Maybe[b] | 否 | No | No | No | 否 |
键集驱动 | ||||||
Insert | Maybe[b] | 否 | No | No | No | 否 |
更新 | 是 | 是 | 是 | 是 | 否 | 否 |
删除 | Maybe[b] | 是 | 是 | 是 | 否 | 否 |
动态 | ||||||
Insert | 是 | 是 | 是 | 是 | 是 | 否 |
更新 | 是 | 是 | 是 | 是 | 否 | 否 |
刪除 | 是 | 是 | 是 | 是 | 否 | 否 |
[a] 括号中的字母表示包含游标的事务的隔离级别;其他事务的隔离级别(在其中进行更改)与其无关。
RU:未提交读
RC:已提交读
RR:可重复读
S:可序列化
[b] 取决于游标的实现方式。 通过 SQLGetInfo 中的 SQL_STATIC_SENSITIVITY 选项报告游标是否可以检测此类更改。