Пример выполнения работы




1. Создадим триггер, который при оформлении нового заказа (при добавлении новой записи в таблицу orders) будет увеличивать на 1 значение пользовательской пе­ременной @ tot.

Для корректной работы триггера необходимо, чтобы пользовательская переменная @ tot имела значение, отличное от null, т. к. операция сложения с null также приводит к NULL.

2. Создадим триггер, который при добавлении новых покупателей преобразует имена и отчества покупателей в инициалы.

Лабораторная работа № 8
Транзакции

Теоретические сведения

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

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

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

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

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

По умолчанию MySQL работает в режиме автоматического завершения транзакций, т. е. как только выполняется оператор обновления данных, который модифицирует таблицу, изменения тут же сохраняются на диске. Чтобы объединить операторы в транзакцию, следует отключить этот режим: set AUTOCOMMIT=0;

После отключения режима для завершения транзакции необходимо ввести оператор COMMIT, для отката – ROLLBACK.

Включить режим автоматического завершения транзакций для отдельной последовательности операторов можно оператором START TRANSACTION.

Для таблиц InnoDB есть операторы savepoint и rollback to savepoint, которые позволяют работать с именованными точками начала транзакции.

Оператор savepoint устанавливает именованную точку начала транзакции с именем point1. Оператор rollback to savepoint point1 откатывает транзакцию к состоянию, в котором находилась БД на момент установки именованной точки. Все точки сохранения транзакций удаляются, если выполняются операторы commit или rollback без указания имени точки сохранения.

 

Практическая работа

При выполнении лабораторной работы необходимо:

· создать транзакцию, произвести ее откат и фиксацию;

· составить отчет по лабораторной работе.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-10-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: