Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на СУБД.docx
Скачиваний:
10
Добавлен:
30.08.2019
Размер:
147 Кб
Скачать
☆

8. Понятие курсора

Курсор в SQL – это область в памяти БД, которая предназначена для хранения результата оператора выборки SQL. Указанная область в памяти поименована и доступна для прикладных программ.

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

В соответствии со стандартом SQL при работе с курсорами можно выделить следующие основные действия:

  • создание или объявление курсора;

  • открытие курсора, т.е. наполнение его данными, которые сохраняются в памяти;

  • выборка из курсора и изменение с его помощью строк данных;

  • закрытие курсора, после чего он становится недоступным для пользовательских программ;

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

Недостатки:

  • не позволяют проводить операции изменения над всем объемом данных;

  • скорость выполнения операций обработки данных посредством курсора заметно ниже, чем у стандартных средств SQL.

Таким образом, при манипулировании данными следует избегать работы с курсорами и использовать командами обработки данных: UPDATE, INSERT, DELETE.

Курсоры делятся на две категории: последовательные и прокручиваемые. Последовательные позволяют выбирать данные только в одном направлении – от начала к концу. Прокручиваемые же курсоры предоставляют большую свободу действий – допускается перемещение в обоих направлениях и переход к произвольной строке результирующего набора курсора.

SQL Server поддерживает курсоры статические, динамические, быстрые последовательные и управляемые набором ключей (ключевые курсоры).

9.

Понятие транзакции

Определение. Транзакция - это последовательность операторов манипулирования данными, выполняющаяся как единое целое (все или ничего) и переводящая базу данных из одного целостного состояния в другое целостное состояние.

Транзакция обладает четырьмя важными свойствами, известными как свойства АСИД:

  • (А) Атомарность. Транзакция выполняется как одна операция - либо выполняется вся транзакция целиком, либо она целиком не выполняется.

  • (С) Согласованность. Транзакция переводит базу данных из одного согласованного (целостного) состояния в другое согласованное (целостное) состояние. Внутри транзакции согласованность базы данных может нарушаться.

  • (И) Изоляция. Транзакции разных пользователей не должны мешать друг другу (например, как если бы они выполнялись строго по очереди).

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

Транзакция обычно начинается автоматически с момента выполнения запроса и продолжается до тех пор, пока не произойдет одно из следующих событий:

  • Подана команда COMMIT (зафиксировать транзакцию).

  • Подана команда ROLLBACK TRANSACTION (откатить транзакцию).

  • Произошло отсоединение пользователя от СУБД.

  • Произошел сбой системы.

Одним из способов поддержки транзакций является ведение журнала. Журнал транзакций — это структура данных, в которой хранятся записи о планирующихся и выполненных операциях. Работа с ним состоит из трёх шагов:

  1. Записать намерение произвести некоторые операции

  2. Запись о выполнении задания

  3. Записать об отсутствии ошибок