Поделиться через


Прокручиваемые курсоры и изоляция транзакций

В следующей таблице перечислены факторы, определяющие видимость изменений.

Изменения, внесенные: Видимость зависит от:
Cursor Тип курсора, реализация курсора
Другие операторы в той же транзакции Тип курсора
Заявления в других транзакциях Тип курсора, уровень изоляции транзакций

Эти факторы показаны на следующем рисунке.

Факторы, управляющие видимостью изменений

В следующей таблице приведены сведения о способности каждого типа курсора обнаруживать изменения, внесенные самим собой, другими операциями в собственной транзакции и другими транзакциями. Видимость последних изменений зависит от типа курсора и уровня изоляции транзакции, содержащей курсор.

Тип курсора\действие Self Владеть

Txn
Отр

Txn

(RU[a])
Отр

Txn

(RC[a])
Отр

Txn

(RR[a])
Отр

Txn

(S[a])
Статика
Вставить Может быть[b] нет нет нет нет нет
Update Может быть[b] нет нет нет нет нет
Delete Может быть[b] нет нет нет нет нет
На основе набора ключей
Вставить Может быть[b] нет нет нет нет нет
Update Да Да Да Да нет нет
Delete Может быть[b] Да Да Да нет нет
Динамический
Вставить Да Да Да Да Да нет
Update Да Да Да Да нет нет
Delete Да Да Да Да нет нет

[a] Буквы в скобках указывают уровень изоляции транзакции, содержащей курсор; Уровень изоляции другой транзакции (в которой было сделано изменение) не имеет значения.

RU: Неподтверждённое чтение

RC: чтение зафиксировано

RR: повторяющееся чтение

S: Сериализуемая

[b] Зависит от того, как реализуется курсор. Сообщается ли курсором об обнаружении таких изменений с помощью параметра SQL_STATIC_SENSITIVITY в SQLGetInfo.