Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / что отменяет Rollback Transaction в триггере? / 8 сообщений из 8, страница 1 из 1
29.01.2002, 08:18
    #32021699
EugeneK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что отменяет Rollback Transaction в триггере?
В ХП последовательно вызываются апдейты для разных строк таблицы с триггером. Иногда триггер запрещает апдейт. Вопрос - после того, как в триггер выдаст Rollback Transaction, ХП продолжит выполняться как ни в чем не бывало? Изменения в других записях произведутся?

Если да (что меня не устраивает), то я должен явно объявить начало транзакции в ХП перед началом цикла апдейтов таблицы с триггерами? И, наверное, анализировать в ХП, какую-то системную переменную, чтобы знать нормально ли сработал триггер?

Спросим по другому, как правильно написать ХП, делающую в цикле апдейты, чтобы при запрете триггером одного апдейта, другие тоже не выполнились?
...
Рейтинг: 0 / 0
29.01.2002, 08:32
    #32021701
ЗоринАндрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что отменяет Rollback Transaction в триггере?
Rollback transaction (не суть важно в триггере или нет) откатывает ВСЮ транзакцию.
...
Рейтинг: 0 / 0
29.01.2002, 08:43
    #32021702
EugeneK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что отменяет Rollback Transaction в триггере?
Дык в том и вопрос, что понимается под транзакцией? Вызов хранимой процедуры или выполнение в хранимой процедуре конкретного апдейта? ЧТО отменяет Rollback в триггере?

Пользуясь случаем (дорвался до Инета) спрошу еще:

Я кстати, всегда ипользую связку

RAISERROR('Осмысленый текст')
ROLLBACK TRIGGER

Это нормально? По-моему, первое без второго не отменяло транзакцию, а второе без первого не давало возможность юзеру увидеть/понять ошибку...
...
Рейтинг: 0 / 0
29.01.2002, 09:08
    #32021704
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что отменяет Rollback Transaction в триггере?
Под транзакцией понимается транзакция.

Она начинается 2-я способами:
1. явно - begin transaction
2. неявно при выполнении любого изменения; при этом завершается в зависимости от соотв. установок - см. SET IMPLICIT_TRANSACTIONS { ON | OFF }

Связка
RAISERROR('Осмысленый текст')
ROLLBACK TRIGGER
совершенно правильная.
...
Рейтинг: 0 / 0
29.01.2002, 14:40
    #32021743
Еугене
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что отменяет Rollback Transaction в триггере?
Значит, если я хочу в ХП в цикле делать апдейты, и чтобы триггер меняемой таблицы при любой ошибке отменял все апдейты, я должен перед началом цикла поставить

SET IMPLICIT_TRANSACTION OFF
BEGIN TRANSACTION

А куда передастся управление после выполнения ROLLBACK TRAN в триггере? Продолжится выполняться цикл апдейтов? А как тогда в ХП выцепить выполнение триггером ROLLBACK TRAN?
...
Рейтинг: 0 / 0
29.01.2002, 15:06
    #32021747
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что отменяет Rollback Transaction в триггере?
В процедуре, в цикле, после упдэйта написать:
if @@error>0
break
...
Рейтинг: 0 / 0
31.01.2002, 13:49
    #32021918
EugeneK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что отменяет Rollback Transaction в триггере?
Резюмирую.
Если я хочу в цикле выполнять апдейты, но при выявлении ошибки в триггере апдейтимой таблицы отменять ВСЕ апдейты, то я должен написать следующую конструкцию:

BEGIN TRAN
SET IMPLICITE_TRANSACTION OFF

WHILE (Условие)
BEGIN
UPDATE что-то
if @@error>0 break
END

COMMIT TRAN
SET IMPLICITE_TRANSACTION ON

Или COMMIT не нужен, так как совершится автоматически по окончании ХП?
...
Рейтинг: 0 / 0
31.01.2002, 15:13
    #32021925
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что отменяет Rollback Transaction в триггере?
BEGIN TRAN

WHILE (Условие)
BEGIN
UPDATE что-то
if @@error<>0 goto Err
END

COMMIT TRAN
return

Err:
if @@trancount > 1 ROLLBACK TRAN
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / что отменяет Rollback Transaction в триггере? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]