Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Явные транзакции требуют, чтобы пользователь указал начало и конец транзакции, используя следующие команды:
Начало транзакции: в журнале транзакций фиксируются первоначальные значения изменяемых данных и момент начала транзакции;
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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!