Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD_gotovy.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
511 Кб
Скачать
☆

14. Команды работы с транзакциями. Использование поименованных

транзакций и точек сохранения.

Под управлением транзакциями понимается способность управлять различными операциями над данными, которые выполняются внутри реляционной СУБД. Прежде всего, имеется в виду выполнение операторов INSERT, UPDATE иDELETE. Например, после создания таблицы (выполнения оператора CREATETABLE) не нужно фиксировать результат: создание таблицы фиксируется в базе данных автоматически. Точно так же с помощью отмены транзакциине удастся восстановить только что удаленную оператором DROPTABLE таблицу.

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

Существуют три команды, которые используются для управления транзакциями:

v  COMMIT – для сохранения изменений;

v  ROLLBACK – для отмены изменений;

v  SAVEPOINT – для установки особых точек возврата.

Команды begin transaction (начать транзакцию) и commit transaction (закончить транзакцию) указывают SQL Серверу, что последовательность операторов, расположенную между ними, нужно выполнить как единый блок. Команда rollback transaction (откат транзакции) отменяет изменения, произведенные транзакцией, возвращаясь либо к исходному состоянию, в котором находилась система до начала транзакции, либо к состоянию, соответствующему точке сохранения (save point). Можно определить точку сохранения внутри транзакции с помощью командыsave transaction (сохранить транзакцию).

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

Точки сохранения предлагают механизм отката частей транзакции. Точки сохранения создаются выражением SAVE TRANSACTION savepoint_name, и выполнение выражения ROLLBACK TRANSACTION savepoint_name приводит к откату до точки сохранения вместо полного отката транзакции.

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

15. Способы применения sql в прикладных программах. Встроенный sql. Особенности встроенного оператора select.

Язык SQL можно использовать как винтерактивном режиме, так и путем внедрения его операторов в программы, написанные на процедурных языках высокого уровня. Примером интерактивного использования SQL-операторов является окно Query Analyzer в среде MS SQL Server. Применение же языка SQL в прикладных программах на практике реализовано двумя различными способами:

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

Использование прикладного интерфейса программирования (API). Альтернативный вариант состоит в предоставлении программисту стандартного набора функций, к которым можно обращаться из создаваемых им программ. Конкретный вариант API может предоставлять тот же набор функциональных возможностей, который существует при подключении встроенных операторов, однако при этом устраняется необходимость предкомпилирования исходного текста. Кроме того, некоторые разработчики указывают, что в этом случае используется более понятный интерфейс и созданный программный текст более удобен с точки зрения его сопровождения.

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

Оператор SELECT предназначен для выборки и отображения данных из одной или нескольких таблиц БД. Синтаксис оператора  select: SELECT  [DISTINCT|  ALL]  {*|   [<список полей>]}  FROM <список таблиц> [WHERE <предикат-условие выборки или соединения>] [GROUP BY         <список полей результата>] [HAVING              <предикат-условие для группы>] [ORDER BY         <список полей,   по которым требуется упорядочить вывод>] В указанном операторе обязательными являются фразы select и from. Все остальные части опе­ратора могут быть использованы по усмотрению программиста.

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