下表列出了控制更改可见性的因素。
| 更改者: | 可见性取决于: |
|---|---|
| Cursor | 游标类型,游标实现 |
| 同一事务中的其他语句 | 游标类型 |
| 其他事务中的声明 | 游标类型,事务隔离级别 |
下图显示了这些因素。
下表汇总了每个游标类型能够检测自身所做的更改、其自身事务中的其他操作所做的更改以及其他事务所做的更改。 后者可见性的变化取决于游标的类型和包含该游标的事务的隔离级别。
| 游标类型\操作 | Self | 有 Txn |
Othr Txn (RU[a]) |
Othr Txn (RC[a]) |
Othr Txn (RR[a]) |
Othr Txn (S[a]) |
|---|---|---|---|---|---|---|
| Static | ||||||
| 插入 | 可能[b] | 否 | 否 | 否 | 否 | 否 |
| Update | 可能[b] | 否 | 否 | 否 | 否 | 否 |
| 删除 | 可能[b] | 否 | 否 | 否 | 否 | 否 |
| 键集驱动的 | ||||||
| 插入 | 可能[b] | 否 | 否 | 否 | 否 | 否 |
| Update | 是的 | 是的 | 是的 | 是的 | 否 | 否 |
| 删除 | 可能[b] | 是的 | 是的 | 是的 | 否 | 否 |
| 动态 | ||||||
| 插入 | 是的 | 是的 | 是的 | 是的 | 是的 | 否 |
| Update | 是的 | 是的 | 是的 | 是的 | 否 | 否 |
| 删除 | 是的 | 是的 | 是的 | 是的 | 否 | 否 |
[a] 括号中的字母指示包含游标的事务的隔离级别;其他事务的隔离级别(在其中进行更改)无关紧要。
RU:读取未提交
RC:读已提交
RR:可重复读取
S:可序列化
[b] 取决于游标的实现方式。 游标是否可以通过 SQLGetInfo 中的SQL_STATIC_SENSITIVITY选项报告此类更改。