Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Явные транзакции



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

Начало транзакции: в журнале транзакций фиксируются первоначальные значения изменяемых данных и момент начала транзакции;

BEGIN TRAN[SACTION]

[имя_транзакции | @имя_переменной_транзакции ]

[WITH MARK [‘описание’]]]

Опция WITH MARK указывает, что транзакция маркирована в журнале транзакций.

Конец транзакции: если в теле транзакции не было ошибок, то эта команда предписывает серверу зафиксировать все изменения, сделанные в транзакции, после чего в журнале транзакций помечается, что изменения зафиксированы и транзакция завершена;

COMMIT [TRAN[SACTION]

[имя_транзакции | @имя_переменной_транзакции]]

Создание внутри транзакции точки сохранения: СУБД сохраняет состояние БД в текущей точке и присваивает сохраненному состоянию имя точки сохранения;

SAVE TRAN[SACTION]

[имя_точки_сохранеия | @имя_переменной_точки_сохранения]

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

ROLLBACK [TRAN[SACTION]

[имя_транзакции | @имя_переменной_транзакции

| имя_точки_сохранения | @имя_переменной_точки_сохранения]]

Функция @@TRANCOUNT возвращает количество активных транзакций.

Пример использования явной транзакции:

BEGIN TRAN

UPDATE R1 SET Баланс = Баланс - 100 WHERE [Номер счета]= ' A123 '

UPDATE R1 SET Баланс = Баланс + 100 WHERE [Номер счета]= ' Б123 '

COMMIT

Пример использования точек сохранения:

BEGIN TRAN

SAVE TRANSACTION point1

-- в point1 – первоначальное состояние R1

UPDATE R1 SET Баланс = Баланс - 100 WHERE [Номер счета]= ' A123 '

SAVE TRANSACTION point2

-- в point2 – со счёта А123 снято 100 единиц

UPDATE R1 SET Баланс = Баланс + 100 WHERE [Номер счета]= ' Б123 '

SAVE TRANSACTION point3

-- в point3 – на счёт Б123 добавлено 100 единиц

UPDATE R1 SET Баланс = 0 WHERE [Номер счета] LIKE [АБ]+ ' 123 '

ROLLBACK TRANSACTION point3

-- откат к точке point3

SELECT * FROM R1

ROLLBACK TRANSACTION point1

-- откат к точке point1 (исходное состояние R1)

SELECT * FROM R1

COMMIT





Дата публикования: 2015-09-17; Прочитано: 211 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...