Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BAZ_DANN_Kh.doc
Скачиваний:
7
Добавлен:
26.09.2019
Размер:
152.58 Кб
Скачать

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

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

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

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

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

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

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

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

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

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

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

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

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

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