Команда RELEASE SAVEPOINT используется для удаления точек отката. После удаления точки отката у вас не будет возможности осуществить откат к этой точке с помощью КОМаНДЫ ROLLBACK.
RELEASE SAVEPOINT ИМЯ_ТОЧКИ_ОТКАТА;
Команда SET TRANSACTION используется для инициализации транзакций. Эта команда используется для задания характеристик транзакций, следующих после нее. Так, можно потребовать, чтобы транзакции выполняли только чтение данных либо осуществляли и чтение, и запись. Например,
SET TRANSACTION READ WRITE; SET TRANSACTION READ ONLY;
Транзакциям можно назначить и другие характеристики, но их рассмотрение выходит за рамки этой книги. Дополнительную информацию вы найдете в документации той реализации SQL, которую используете.
Недостаточный контроль за транзакциями может замедлить работу базы данных и даже совсем блокировать ее. Частое замедление работы базы данных может быть следствием недостаточного контроля за транзакциями при массовом вводе, обновлении или удалении данных. Эти процессы не только сами по себе требуют больших ресурсов процессора и памяти, но и вызывают заполнение области хранения временных данных, освобождающейся только в результате выполнения команд COMMIT И ROLLBACK.
В результате применения команды COMMIT результаты выполнения транзакций записываются в базу данных, а информация в области для временных данных, обеспечивающая возможность отмены, стирается. В случае использования команды
ROLLBACK, в базу данных изменения не вносятся, но информация в области для временных данных, обеспечивающая возможность отмены, стирается. Если команды COMMIT и ROLLBACK не использовать достаточно долго, то область для временных данных постепенно заполнится, что приведет к остановке всех процессов в базе данных до тех пор, пока пространство не будет освобождено.
На этом уроке вы ознакомились с основами управления транзакциями, осуществляемого с помощью команд COMMIT, ROLLBACK и SAVEPOINT. Команда COMMIT используется для сохранения результатов транзакции в базе данных, ROLLBACK используется для отмены транзакций, a SAVEPOINT - для разделения транзакций на группы, дающие возможность отката к заранее выбранным точкам в последовательности выполняемых транзакций.
Не забывайте достаточно часто использовать команды COMMIT и ROLLBACK при выполнении большого числа транзакций, чтобы не вызвать переполнения доступного базе данных пространства. Не забывайте также, что команды управления транзакциями используются только с командами DML (командами INSERT, UPDATE и DELETE).
Обязательно ли подтверждение после каждого использования команды INSERT?
Нет, не обязательно. Если вам требуется ввести в таблицу несколько сотен тысяч строк, то команду COMMIT рекомендуется использовать после ввода каждых 5000-10000 строк, в зависимости от размера области, предназначенной для хранения временных данных. Помните, что база данных не может работать, когда эта область переполнена.
Каким образом команда ROLLBACK отменяет изменения, сделанные в результате транзакции?
Команда ROLLBACK удаляет информацию о сделанных изменениях из области с временными данными.
Допустим, при выполнении транзакции 99 % ее операторов завершились успешно, а 1 % вернули ошибки, имеется ли возможность отменить только эти ошибочные операторы?
Нет, транзакция должна быть полностью успешной - иначе возникает угроза нарушения целостности данных.
Команда COMMIT делает транзакцию перманентной. Можно ли после этого изменить данные?
В данном случае перманентность означает внесение изменений в базу данных. У вас всегда имеется возможность внесения новых изменений в базу данных с помощью оператора UPDATE.
Задания практических занятий разделены на тесты и упражнения. Тесты предназначены для проверки общего уровня понимания рассмотренного материала. Упражнения дают возможность применить на практике идеи, обсуждавшиеся в ходе теку-
щего урока, в комбинации с идеями из предыдущих уроков. Мы рекомендуем ответить на тестовые вопросы и выполнить упражнения прежде, чем продолжать дальнейшее чтение книги. Ответы можно проверить по Приложению Б, "Ответы .
1. Верно ли следующее утверждение: "Если вы подтвердили несколько транзакций а затем ввели еще несколько, не подтвердив их, то в результате применения команды ROLLBACK будут отменены вообще все^транзакции, выполненные в течение данного сеанса доступа к базе данных?"
2. Верно ли следующее утверждение: "Команда SAVEPOINT сохраняет транзакции после выполнения определенного количества транзакций?"
3. Кратко охарактеризуйте назначение команд COMMIT, ROLLBACK и SAVEPOINT.
1. Рассмотрите следующие транзакции и создайте точки отката после каждой третьей из них. После этого подтвердите все транзакции.
transaction1;
transaction2;
transaction3;
transaction4;
transaction5,
transaction6,
transaction7;
transaction8;
transaction9;
transaction10;
transaction11;
transaction12;
7-й час Знакомство с запросами
На этом уроке мы поговорим о запросах к базе данных. В основе запросов лежит использование оператора SELECT, из операторов SQL являющегося, пожалуй, для уже сложившихся баз данных наиболее часто используемым
Основными на этом уроке будут следующие темы
• Что такое запрос к базе данных
• Использование оператора SELECT
• Добавление в запрос условий с помощью ключевого слова WHERE
• Использование псевдонимов столбцов
• Получение данных из таблиц других пользователей
Запрос - это обращение к базе данных с помощью оператора SELECT. Запросы используются для того, чтобы извлечь данные в том виде, который удобен пользователю. Например, с помощью соответствующего оператора SQL можно из таблицы с информацией о служащих извлечь имя служащего с максимальным уровнем оплаты. Такого вида запросы являются типичными для реляционных баз данных.
Оператор SELECT, представляющий язык запросов к данным (Data Query Language - DQL) в SQL, используется для составления запросов к базе данных. Оператор SELECT не используется сам по себе, а требует указания некоторых параметров с помощью ключевых слов. Кроме обязательных, у этого оператора имеется несколько необязательных ключевых слов, расширяющих его возможности. Оператор SELECT является, пожалуй, одним из наиболее полезных операторов SQL. С оператором SELECT должно использоваться ключевое слово FROM, которое для этого оператора является обязательным.
Оператор SELECT состоит из выражений, строящихся на основе следующих четырех ключевых слов.
• SELECT
• FROM
• WHERE
• ORDER BY Использование этих ключевых слов будет подробно рассмотрено в следующих разделах.
В операторе SELECT ключевое слово SELECT используется в совокупности с ключевым словом FROM для того, чтобы организовать извлечение данных из базы данных в удобном для чтения формате. Часть запроса, заданная ключевым словом SELECT, определяет источник отбора данных.
Синтаксис простого оператора SELECT следующий.
SELECT [ * | ALL | DISTINCT СТОЛБЕЦ1, СТОЛБЕЦ2 ]
FROM ТАБЛИЦА1 [ , ТАБЛИЦА2 ];
За ключевым словом SELECT в запросе следует список столбцов, значения которых вы хотели бы видеть в результате запроса За ключевым словом FROM следует список таблиц, из которых должны извлекаться данные. Звездочка (*) используется для указания того, что в результате запроса должны быть показаны значения всех столбцов таблицы. По поводу ее использования обратитесь к документации той реализации SQL, с которой работаете вы. Опция ALL используется тогда, когда нужно показать все значения столбца, включая и повторяющиеся. Опция DISTINCT используется для того, чтобы повторения исключить. Из этих опций используемой по умолчанию опцией является ALL, которую поэтому указывать не обязательно. Обратите внимание на то, что имена столбцов в списке, следующем за ключевым словом SELECT, разделяются запятыми, точно так же, как имена таблиц, следующие за ключевым словом FROM.