русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Поддержка транзакций в языке SQL


Дата добавления: 2015-07-09; просмотров: 1592; Нарушение авторских прав


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

Языковые правила поддержки транзакций для различных СУБД несколько различаются. Например, в Microsoft SQL Server поддерживается команда начала транзакции BEGIN TRANS[ACTION]. В Oracle такой команды нет, но существуют четкие правила, регламентирующие моменты начала и завершения транзакции:

1). Любая команда ddl выполняется как отдельная транзакция. Иными словами, поступление на сервер команды DDL автоматически фиксирует результаты предыдущих команд DML этого сеанса (если таковые были) и начинает новую транзакцию, а при завершении команды DDL автоматически фиксируются ее результаты. Таким образом, одна команда DDL вызывает те же действия, что и последовательность команд:

COMMIT

команда DDL

COMMIT

Получается, что несколько команд DDL нельзя объединить в единую транзакцию и откатить команду DDL при помощи стандартной команды ROLLBACK в Oracle также нельзя.

2). Результаты выполнения команд dml автоматически фиксируются только при включенном режиме AUTOCOMMIT (например, в настройках утилиты SQL*Plus есть возможность включения этого режима). По умолчанию этот режим отключен. Таким образом, все идущие подряд команды DML воспринимаются как одна транзакция.

Инициализация транзакции (неявная команда BEGIN TRANSACTION) происходит в следующих случаях:

· первая команда в сеансе связи

· первая команда после команд COMMIT или ROLLBACK

· первая команда после команды DDL

 

Завершение транзакции происходит при поступлении команд commit (завершение транзакции с фиксацией изменений) или rollback (завершение транзакции с откатом изменений). Можно неявно зафиксировать команду транзакцию из последовательности команд dml любой следующей за ней командой ddl.



Стандарт SQL и многие СУБД, в том числе Oracle, предусматривают так называемые точки сохранения. Точка сохранения задается оператором

SAVEPOINT имя_точки_сохранения

и в операторе ROLLBACK имеется возможность отката транзакции не к началу, а к указанной точке сохранения:

ROLLBACK TO имя_точки_сохранения

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



<== предыдущая лекция | следующая лекция ==>
Согласованность (целостность) | Redo-журнал


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.139 сек.