Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
06.11.2001, 11:32
|
|||
|---|---|---|---|
|
|||
Возращение результата работы триггера? |
|||
|
#18+
Народ, подскажите, пожалуйста, как вернуть результат работы триггера для анализа его работы. Т.е., например, имеются три подчинённые таблицы: 1) main_tbl, 2) parent_tbl, 3) chail_tbl . При обновлении поля del_ в таблице parent_tbl через триггер (см. ниже) изменяется соответствующее поле в подчинённой таблице chail_tbl. UPDATE в chail_tbl по какой-то причине потерпело неудачу, триггер возвращает @kolRec=-1 (количество изм. строк). Изменение поля del_ в таблице parent_tbl вызвано в свою очередь UPDATE-триггером главной таблицы main_tbl. Выполняется откат всех изменеий для всех трёх таблиц (т.е. код ошибки должен передаваться снизу вверх). Да и вообще, неплохо было бы знать, что обновление не прошло, т.к. по такой-то причине триггер (а не что иное) сделал откат. Заранее спасибо! CREATE TRIGGER trig_ ON [dbo].[parent_tbl] FOR UPDATE AS BEGIN DECLARE @uni UNIQUEIDENTIFIER, @prnt_del BIT, @kolRec INTEGER, @upd_error INTEGER SELECT @uni=i.id, @prnt_del=i.del_ FROM paren_tbl k INNER JOIN inserted i ON k.id= i.id BEGIN TRAN UPDATE chail_tbl SET del_ = @prnt_del WHERE id=@uni SET @kolRec=@@ROWCOUNT SET @upd_error = @@ERROR IF @upd_error = 0 COMMIT TRAN ELSE BEGIN ROLLBACK TRAN SET @kolRec=-1 END END ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.11.2001, 12:46
|
|||
|---|---|---|---|
|
|||
Возращение результата работы триггера? |
|||
|
#18+
По-моему, в таких случаях надо ставить автоматический откат транзакции SET XACT_ABORT ON: все само откатится и ошибка приползет на клиента. Если установка этой опции нежелательна, то в триггере надо делать проверку @@error и самостоятельно выбрасывать ошибку и откатывать транзакцию. if @@error <> 0 begin raiserror ('Trigger tr1 generated some error', 16, 1) rollback end Можно еще и родной код случившейся ошибки добавить, если есть желание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=46&mobile=1&tid=1825079]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 346ms |

| 0 / 0 |
