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

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

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

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

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

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

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

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

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

SET IMPLICIT_TRANSACTION OFF
BEGIN TRANSACTION

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

BEGIN TRAN
SET IMPLICITE_TRANSACTION OFF

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

COMMIT TRAN
SET IMPLICITE_TRANSACTION ON

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

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

COMMIT TRAN
return

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


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