Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
что отменяет Rollback Transaction в триггере?
|
|||
|---|---|---|---|
|
#18+
В ХП последовательно вызываются апдейты для разных строк таблицы с триггером. Иногда триггер запрещает апдейт. Вопрос - после того, как в триггер выдаст Rollback Transaction, ХП продолжит выполняться как ни в чем не бывало? Изменения в других записях произведутся? Если да (что меня не устраивает), то я должен явно объявить начало транзакции в ХП перед началом цикла апдейтов таблицы с триггерами? И, наверное, анализировать в ХП, какую-то системную переменную, чтобы знать нормально ли сработал триггер? Спросим по другому, как правильно написать ХП, делающую в цикле апдейты, чтобы при запрете триггером одного апдейта, другие тоже не выполнились? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2002, 08:18 |
|
||
|
что отменяет Rollback Transaction в триггере?
|
|||
|---|---|---|---|
|
#18+
Rollback transaction (не суть важно в триггере или нет) откатывает ВСЮ транзакцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2002, 08:32 |
|
||
|
что отменяет Rollback Transaction в триггере?
|
|||
|---|---|---|---|
|
#18+
Дык в том и вопрос, что понимается под транзакцией? Вызов хранимой процедуры или выполнение в хранимой процедуре конкретного апдейта? ЧТО отменяет Rollback в триггере? Пользуясь случаем (дорвался до Инета) спрошу еще: Я кстати, всегда ипользую связку RAISERROR('Осмысленый текст') ROLLBACK TRIGGER Это нормально? По-моему, первое без второго не отменяло транзакцию, а второе без первого не давало возможность юзеру увидеть/понять ошибку... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2002, 08:43 |
|
||
|
что отменяет Rollback Transaction в триггере?
|
|||
|---|---|---|---|
|
#18+
Под транзакцией понимается транзакция. Она начинается 2-я способами: 1. явно - begin transaction 2. неявно при выполнении любого изменения; при этом завершается в зависимости от соотв. установок - см. SET IMPLICIT_TRANSACTIONS { ON | OFF } Связка RAISERROR('Осмысленый текст') ROLLBACK TRIGGER совершенно правильная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2002, 09:08 |
|
||
|
что отменяет Rollback Transaction в триггере?
|
|||
|---|---|---|---|
|
#18+
Значит, если я хочу в ХП в цикле делать апдейты, и чтобы триггер меняемой таблицы при любой ошибке отменял все апдейты, я должен перед началом цикла поставить SET IMPLICIT_TRANSACTION OFF BEGIN TRANSACTION А куда передастся управление после выполнения ROLLBACK TRAN в триггере? Продолжится выполняться цикл апдейтов? А как тогда в ХП выцепить выполнение триггером ROLLBACK TRAN? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2002, 14:40 |
|
||
|
что отменяет Rollback Transaction в триггере?
|
|||
|---|---|---|---|
|
#18+
В процедуре, в цикле, после упдэйта написать: if @@error>0 break ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2002, 15:06 |
|
||
|
что отменяет Rollback Transaction в триггере?
|
|||
|---|---|---|---|
|
#18+
Резюмирую. Если я хочу в цикле выполнять апдейты, но при выявлении ошибки в триггере апдейтимой таблицы отменять ВСЕ апдейты, то я должен написать следующую конструкцию: BEGIN TRAN SET IMPLICITE_TRANSACTION OFF WHILE (Условие) BEGIN UPDATE что-то if @@error>0 break END COMMIT TRAN SET IMPLICITE_TRANSACTION ON Или COMMIT не нужен, так как совершится автоматически по окончании ХП? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2002, 13:49 |
|
||
|
|

start [/forum/topic.php?fid=46&gotonew=1&tid=1824111]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
8ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 359ms |

| 0 / 0 |
