Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 2-4.doc
Скачиваний:
26
Добавлен:
02.05.2015
Размер:
262.14 Кб
Скачать

4.5. Механизм транзакций

Информация БД в любой момент времени должна быть целостной и непроти­воречивой. Одним из путей обеспечения этого является использование меха­низма транзакций.

Транзакция представляет собой выполнение последовательности операций. При этом возможны две ситуации.

  • Успешно завершены все операции. В этом случае транзакция считается ус­пешной, и все изменения в БД, которые были произведены в рамках тран­закции отдельными операциями, утверждаются. В результате БД переходит из одного целостного состояния в другое.

  • Неудачно завершена хотя бы одна операция. При этом вся транзакция считается неуспешной, и результаты выполнения всех операций (даже успешно выполненных) отменяются. В результате происходит возврат БД в состояние, в котором она находилась до начала транзакции.

Таким образом, успешная транзакция переводит БД из одного целостного со­стояния в другое. Использование механизма транзакций необходимо

  • при выполнении последовательности взаимосвязанных операций с БД;

  • при многопользовательском доступе к БД.

Транзакция может быть неявной или явной.

Неявная транзакция стартует авто­матически, а по завершении также автоматически подтверждается или отменяется.

Явной транзакцией управляет программист с использованием компонента Database и/или средств SQL.

Часто в транзакцию объединяются операции над несколькими таблицами, когда производятся действия по внесению в разные таблицы взаимосвязанных изме­нений. Пусть осуществляется перенос записей из одной таблицы в другую. Если запись сначала удаляется из первой таблицы, а затем заносится во вторую таб­лицу, то при возникновении сбоя, например из-за перерыва в энергопитании компьютера, возможна ситуация, когда запись уже удалена, но во вторую табли­цу не попала. Если запись сначала заносится во вторую таблицу, а потом удаля­ется из первой таблицы, то при сбое возможна ситуация, когда запись будет находиться в двух таблицах. В обоих случаях имеет место нарушение целостно­сти и непротиворечивости БД.

Для предотвращения подобной ситуации операции удаления записи из одной таблицы и занесения ее в другую таблицу объединяются в одну транзакцию. Выполнение этой транзакции гарантирует, что при любом ее результате целост­ность БД нарушена не будет.

Еще одним примером, демонстрирующим необходимость применения механиз­ма транзакций, является складской учет товара. При поступлении товара на склад в таблицу движения товара заносится запись с данными о названии, ко­личестве товара и дате его поступления. Затем в таблице склада соответственно количеству поступившего товара увеличивается наличное количество этого то­вара. При возникновении какой-либо ошибки, связанной с записью наличного количества товара, новое значение может быть не занесено в соответствующую запись, в результате чего будет нарушена целостность БД, и она будет содержать некорректные значения. Такая ситуация возможна, например, в случае много­пользовательского доступа к БД при редактировании этой записи другим при­ложением. Поэтому в случае невозможности внести изменения в наличное ко­личество товара должно блокироваться и добавление новой записи в таблицу движения товара.

Для реализации механизма транзакций СУБД предоставляют соответствующие средства.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]