Прокручиваемые курсоры и изоляция транзакций
В следующей таблице перечислены факторы, определяющие видимость изменений.
Изменения, внесенные в: | Видимость зависит от: |
---|---|
Курсор | Тип курсора, реализация курсора |
Другие операторы в той же транзакции | Тип курсора |
Операторы в других транзакциях | Тип курсора, уровень изоляции транзакций |
Эти факторы показаны на следующем рисунке.
В следующей таблице приведены сведения о способности каждого типа курсора обнаруживать изменения, внесенные самим собой, другими операциями в собственной транзакции и другими транзакциями. Видимость последних изменений зависит от типа курсора и уровня изоляции транзакции, содержащей курсор.
Тип курсора\action | Self | Владелец Txn |
Отр Txn (RU[a]) |
Отр Txn (RC[a]) |
Отр Txn (RR[a]) |
Отр Txn (S[a]) |
---|---|---|---|---|---|---|
Статические | ||||||
Insert | Может быть[b] | No | No | No | No | No |
Обновить | Может быть[b] | No | No | No | No | Нет |
Удаление | Может быть[b] | No | No | No | No | No |
Управляемый набором ключей | ||||||
Insert | Может быть[b] | No | No | No | No | No |
Обновить | Да | Да | Да | Да | No | Нет |
Удаление | Может быть[b] | Да | Да | Да | No | No |
Динамический | ||||||
Insert | Да | Да | Да | Да | Да | Нет |
Обновить | Да | Да | Да | Да | No | Нет |
Удаление | Да | Да | Да | Да | No | No |
[a] Буквы в скобках указывают уровень изоляции транзакции, содержащей курсор; Уровень изоляции другой транзакции (в которой было сделано изменение) не имеет значения.
RU: чтение незафиксированного
RC: чтение зафиксировано
RR: повторяемое чтение
S: Сериализуемая
[b] Зависит от того, как реализуется курсор. Сообщается ли курсор об обнаружении таких изменений с помощью параметра SQL_STATIC_SENSITIVITY в SQLGetInfo.