Инструменты пользователя

Инструменты сайта


Боковая панель

Введение

Статьи и часто задаваемые вопросы

Установка и настройка

Обработка ошибок

Полезные запросы SQL

Тематические группы

autonomous_transaction



AUTONOMOUS TRANSACTION

Версии сервера

0.9 1.0 1.5.3 1.5.4 1.5.5 2.0 2.0.3 2.0.4 2.1 2.5 3.0
- - - - - - - - - Да Да

Доступно в

Формат

IN AUTONOMOUS TRANSACTION DO
  { <simple statement> | <compound statement> }

Описание

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

Новая транзакция, вызываемая оператором IN AUTONOMOUS TRANSACTION DO, стартует с тем же уровнем изоляции, с каким выполняется основной PSQL-блок, вызвавший этот оператор. Любое исключение, вызванное или появившееся в блоке кода автономной транзакции приведет к откату автономной транзакции и отмене всех внесенных изменений. Если код будет выполнен успешно, то автономная транзакция будет подтверждена.

Пример

CREATE TABLE LOG (
   LOGDATE  TIMESTAMP
  ,MSG      VARCHAR(60)
);
 
CREATE EXCEPTION EX_CONN 'Отказано в доступе к базе данных !';
 
SET TERM !;
 
CREATE TRIGGER TRIG_CONN01 ON CONNECT
AS
BEGIN
  IF (CURRENR_USER = 'НеверныйПользователь')THEN  
  BEGIN
    IN AUTONOMOUS TRANSACTION DO
    BEGIN
      /* 
      Этот кусок кода будет выполнен в автономной транзакции и 
      вставка записи в таблицу протокола LOG будет произведена.
      */
      INSERT INTO LOG (LOGDATE, MSG) VALUES (CURRENT_TIMESTAMP, 
         'Отказано в подключении пользователю '||CURRENR_USER );
    END
    /*
    В основном PSQL-блоке вызываем исключение и транзакция 
    завершится откатом.
    */
    EXCEPTION EX_CONN;
  END
END!
 
SET TERM ;!

См. также

Источник

Firebird 2.5 Realise Notes http://firebirdsql.org/devel/doc/rlsnotes/html/rlsnotes25.html

Пожелание пользователей № CORE-1409 http://tracker.firebirdsql.org/browse/CORE-1409

Только авторизованные участники могут оставлять комментарии.
autonomous_transaction.txt · Последние изменения: 2008/08/13 03:21 (внешнее изменение)