Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Завершение транзакции

Выражение case | Простые выражения case | Gt; FROM account | Селективная агрегация | Проверка существования | Ошибки деления на нуль | Условные обновления | Обработка значений Null | Многопользовательские базы данных | Что такое транзакция? |


Читайте также:
  1. В России во второй половине 19 в., развитие капитализма, завершение промышленного переворота.
  2. Завершение войны
  3. Завершение гражданской войны. Провозглашение КНР
  4. Завершение жизненной драмы
  5. Завершение и останов нити
  6. Завершение масштабных военных действий. Хроническая фаза гражданской войны
  7. Завершение политического объединения русских земель

 

Если транзакция запущена – явно посредством команды start transac_ tion или неявно сервером БД, – пользователь должен явно завершить ее, чтобы внесенные им изменения стали постоянными. Это делается с помощью команды commit, которая указывает серверу пометить изме_ нения как постоянные и высвободить все ресурсы (т. е. снять блоки_ ровку страниц или строк), используемые во время транзакции.

 

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

 

Кроме выполнения команды commit или rollback, возможны еще не_ сколько сценариев завершения транзакции – или как косвенный ре_ зультат действий пользователя, или как результат чего_то, находяще_ гося вне власти пользователя:

 

• Выключение сервера; в этом случае откат транзакции будет выпол_ нен автоматически при возобновлении работы сервера.

• Выполнение SQL_выражения управления схемой, например alter table, что приведет к фиксации текущей транзакции и запуску но_ вой.

• Выполнение еще одной команды start transaction, в результате чего происходит фиксация предыдущей транзакции.

• Преждевременное завершение транзакции сервером, который вы_ явил взаимоблокировку (deadlock) и решил, что виновна в этом дан_ ная транзакция. В этом случае будет выполнен откат транзакции и пользователь получит сообщение об ошибке.

 

Из этих четырех сценариев первый и третий довольно просты, а вот два других заслуживают некоторого внимания. Если говорить о втором сценарии, изменения базы данных, независимо от того, было ли это до_ бавление новой таблицы, индексация или удаление столбца из табли_ цы, не могут быть отменены. Таким образом, команды, изменяющие схему, должны выполняться вне транзакции. Поэтому если транзак_ ция уже запущена, сервер зафиксирует ее, выполнит команду(_ы) SQL_выражений управления схемой и затем автоматически запустит новую транзакцию для данного сеанса. Сервер не будет информиро_ вать пользователя о происходящем, поэтому следует действовать ак_ куратно, чтобы выражения, составляющие единицу работы, невзна_ чай не были разбросаны сервером по нескольким транзакциям.

 


Дата добавления: 2015-08-17; просмотров: 31 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Запуск транзакции| Работа с учебником, и изучение научной литературы по психологии

mybiblioteka.su - 2015-2024 год. (0.006 сек.)