W Cat - SQL за 24 часа
- Название:SQL за 24 часа
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
W Cat - SQL за 24 часа краткое содержание
SQL за 24 часа - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Транзакция может представляться одним оператором DML или группой таких операторов. При управлении группами транзакций под успешным завершением выполнения понимается успешное завершение выполнения всех транзакций группы, иначе все они считаются не завершившимися успешно.
Следующий список раскрывает природу транзакций.
• Каждая транзакция имеет начало и конец.
• Любую транзакцию можно либо сохранить, либо отменить.
• Если в любом месте по ходу выполнения транзакции одна из ее операций терпит неудачу, ни одна из составляющих транзакции не может быть сохранена в базе данных.
Способ, каким осуществляется требование начать выполнение транзакции, зависит от конкретной реализации SQL. Соответствующие инструкции вы найдете в документации по своей конкретной реализации. В стандарте ANSI средств для явной активизации начала работы транзакций не предусмотрено.
Под управлением транзакциями понимается наличие возможностей для подконтрольного осуществления транзакций, выполняемых в рамках общей системы управления базой данных. Говоря о транзакциях, мы имеем в виду выполнение команд INSERT, UPDATE и DELETE, рассматривавшихся в ходе предыдущего урока.
При успешном завершении выполнения транзакции соответствующая таблица не изменяется немедленно, хотя соответствующие сообщения вывода создают именно такое впечатление. Для успешно завершившихся транзакций предусмотрены команды управления транзакциями, позволяющие либо сохранить в базе данных все предлагаемые транзакцией изменения, либо отменить их.
Управление транзакциями осуществляется с помощью следующих трех команд:
• COMMIT
• ROLLBACK
• SAVEPOINT Все они подробно обсуждаются в следующих разделах.
Команды управления транзакциями используются только с командами DML INSERT, UPDATE и DELETE. Например, оператор COMMIT не используется для подтверждения создания таблицы. При создании таблицы операция ее создания подтверждается автоматически. Точно так же нельзя с помощью команды ROLLBACK вернуть таблицу, только что удаленную из базы данных.
После завершения транзакции соответствующая ей информация сохраняется в специальном разделе (области) базы данных, предназначенной для хранения временных данных. Все соответствующие изменения будут сохраняться в этой области, пока к ним не будет применена соответствующая команда управления транзакциями. В результате применения такой команды соответствующие изменения либо вносятся в базу данных, либо отменяются, после чего область для хранения временных данных освобождается. Рис. 6.1 иллюстрирует процесс внесения изменений в реляционную базу данных.
Команда COMMIT используется для передачи базе данных (сохранения) изменений, инспирированных транзакцией. Команда COMMIT сохраняет все транзакции, выполненные с момента предыдущего применения либо команды COMMIT, либо команды ROLLBACK.
COMMIT [ WORK ];
Здесь обязательным является только ключевое слово COMMIT вместе с зависящим от реализации символом или командой, означающей завершение оператора. Ключевое слово WORK абсолютно необязательно - его единственной целью является придание команде более понятного вида.
Начнем с выбора всех данных из таблицы PRODUCTS_TMP.
SELECT * FROM PRODUCTS_TMP;
PROD_ID PROD_DESC COST
11235 КОСТЮМ ВЕДЬМЫ 29.99
222 ПЛАСТИКОВЫЕ ТЫКВЫ 7.75
13 ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ 1.1
90 ФОНАРИ 14.5
15 КОСТЮМЫ В АССОРТИМЕНТЕ 10
9 СЛАДКАЯ КУКУРУЗА 1.35
6 ТЫКВЕННЫЕ КОНФЕТЫ 1.45
87 ПЛАСТИКОВЫЕ ПАУКИ 1.05
119 МАСКИ В АССОРТИМЕНТЕ 4.95
1234 ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ 5.95
2345 ПОЛОЧКА ИЗ ДУБА 59.99
11 строк выбраны. Затем удалим из таблицы все записи для товаров, стоимость которых меньше $14,00.
DELETE FROM PRODUCTSJTMP
WHERE COST < 14;
8 строк удалено.
Для того чтобы передать базе данных изменения, проведенные транзакцией, применяется оператор COMMIT:
COMMIT;
Передача выполнена.
При внесении в базу данных большого количества изменений настоятельно рекомендуется использовать команду COMMIT как можно чаще. Хотя слишком частое применение команды COMMIT приводит к существенному замедлению выполнения запрашиваемых операций. Не забывайте о том, что все изменения сначала размещаются в области, допускающей отмену изменений. Если эта область переполнится и не сможет принять очередную порцию информации о вносимых изменениях, база данных скорее всего совсем перестанет отвечать на запросы, что сделает дальнейшее осуществление транзакций вообще невозможным.
В некоторых реализациях SQL транзакции подтверждаются без явного использования команды COMMIT. В таких реализациях сам выход из базы данных автоматически вызывает подтверждение транзакций.
Команда ROLLBACK используется для отмены транзакций, которые еще не были сохранены в базе данных. Команду ROLLBACK можно использовать для отмены только тех транзакций, которые были выполнены после применения последней из команд COMMIT или ROLLBACK.
Синтаксис команды ROLLBACK следующий.
rollback [ work ] ;
Как и в операторе COMMIT, ключевое слово WORK здесь тоже является необязательным.
В следующем примере сначала выберем все записи из таблицы PRODUCTS_TMP, оставшиеся в ней после удаления 8 записей.
SELECT * FROM PRODUCTS_TMP;
PROD_ID PROD_DESC COST
11235 КОСТЮМ ВЕДЬМЫ 29.99
90 ФОНАРИ 14.5
2345 ПОЛОЧКА ИЗ ДУБА 59.99
3 строки выбраны.
Затем изменим таблицу, приписав стоимость $39.99 товару с кодом 11235.
UPDATE PRODUCTS_TMP
SET COST = 39.99 WHERE PROD_ID = "11235';
1 строка обновлена.
Запрос к таблице покажет, что изменения как будто бы внесены. SELECT * FROM PRODUCTS_TMP;
PROD_ID PROD_DESC COST
11235 КОСТЮМ ВЕДЬМЫ 39.99
90 ФОНАРИ 14.5
2345 ПОЛОЧКА ИЗ ДУБА 59.99
3 строки выбраны. Теперь используем команду ROLLBACK, чтобы отменить последние изменения.
ROLLBACK;
Отмена выполнена.
Наконец, проверим, что изменения не были переданы базе данных.
PROD_ID PROD_DESC COST
11235 КОСТЮМ ВЕДЬМЫ 29.99
90 ФОНАРИ 14.5
2345 ПОЛОЧКА ИЗ ДУБА 59.99
3 строки выбраны.
Команда SAVEPOINT определяет точку в транзакции, к которой можно будет возвратиться, чтобы не отменять всю транзакцию. Синтаксис команды SAVEPOINT следующий.
SAVEPOINT ИМЯ_ТОЧКИ_ОТКАТА;
Эта команда предназначена только для создания точек отката между операторами транзакций. Для отмены групп транзакций используется команда ROLLBACK. Команда SAVEPOINT позволяет упростить процесс управления транзакциями путем разделения больших групп транзакций на более мелкие и лучше управляемые группы.
Читать дальшеИнтервал:
Закладка: