Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 как вставить запись в таблицу даже если after insert триггер выбросил ошибку  [new]
tk123
Member

Откуда:
Сообщений: 5
На теперешний момент, если after insert trigger выбрасывает ошибку, сам insert в таблицу не проходит.
как обойти такое поведение?
мне нужно в любом случае (!!!) вставлять строку в таблицу, даже если тригер не смог отработать.
8 дек 11, 15:05    [11729918]     Ответить | Цитировать Сообщить модератору
 Re: как вставить запись в таблицу даже если after insert триггер выбросил ошибку  [new]
Glory
Member

Откуда:
Сообщений: 104751
tk123
мне нужно в любом случае (!!!) вставлять строку в таблицу, даже если тригер не смог отработать.

уберите триггер тогда
8 дек 11, 15:11    [11729980]     Ответить | Цитировать Сообщить модератору
 Re: как вставить запись в таблицу даже если after insert триггер выбросил ошибку  [new]
tk123
Member

Откуда:
Сообщений: 5
спасибо кэп )
8 дек 11, 15:13    [11730001]     Ответить | Цитировать Сообщить модератору
 Re: как вставить запись в таблицу даже если after insert триггер выбросил ошибку  [new]
tk123
Member

Откуда:
Сообщений: 5
проясняю вопрос: нужно каким-то образом разъединить транзакцию инсерта и тригера, чтобы одной транзакцией пошел сам инсерт запрос а только потом второй пошли все квири тригера.
чисто теоретически существует возможность так сделать?
8 дек 11, 15:24    [11730106]     Ответить | Цитировать Сообщить модератору
 Re: как вставить запись в таблицу даже если after insert триггер выбросил ошибку  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
tk123
проясняю вопрос: нужно каким-то образом разъединить транзакцию инсерта и тригера, чтобы одной транзакцией пошел сам инсерт запрос а только потом второй пошли все квири тригера.
чисто теоретически существует возможность так сделать?
Без переписывания триггера - нет.
8 дек 11, 15:26    [11730127]     Ответить | Цитировать Сообщить модератору
 Re: как вставить запись в таблицу даже если after insert триггер выбросил ошибку  [new]
Glory
Member

Откуда:
Сообщений: 104751
tk123
проясняю вопрос: нужно каким-то образом разъединить транзакцию инсерта и тригера, чтобы одной транзакцией пошел сам инсерт запрос а только потом второй пошли все квири тригера.
чисто теоретически существует возможность так сделать?

Кэп, триггер всегда выполняется в транзакции
8 дек 11, 15:31    [11730180]     Ответить | Цитировать Сообщить модератору
 Re: как вставить запись в таблицу даже если after insert триггер выбросил ошибку  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Glory
tk123
проясняю вопрос: нужно каким-то образом разъединить транзакцию инсерта и тригера, чтобы одной транзакцией пошел сам инсерт запрос а только потом второй пошли все квири тригера.
чисто теоретически существует возможность так сделать?

Кэп, триггер всегда выполняется в транзакции
Точнее - "начинает выполняться в транзакции"?
8 дек 11, 15:48    [11730378]     Ответить | Цитировать Сообщить модератору
 Re: как вставить запись в таблицу даже если after insert триггер выбросил ошибку  [new]
tk123
Member

Откуда:
Сообщений: 5
Гавриленко Сергей Алексеевич
Без переписывания триггера - нет.

я могу его переписать. что именно нужно указать, чтобы тригер выполнялся отдельно от инсерт-запроса?
8 дек 11, 15:50    [11730406]     Ответить | Цитировать Сообщить модератору
 Re: как вставить запись в таблицу даже если after insert триггер выбросил ошибку  [new]
Glory
Member

Откуда:
Сообщений: 104751
tk123
что именно нужно указать, чтобы тригер выполнялся отдельно от инсерт-запроса?

Указать какой нибудь другой сервер, не MSSQL
8 дек 11, 15:53    [11730432]     Ответить | Цитировать Сообщить модератору
 Re: как вставить запись в таблицу даже если after insert триггер выбросил ошибку  [new]
baracs
Member

Откуда: Москва
Сообщений: 7217
tk123
Гавриленко Сергей Алексеевич
Без переписывания триггера - нет.

я могу его переписать. что именно нужно указать, чтобы тригер выполнялся отдельно от инсерт-запроса?
Не создавать триггер на INSERT?

Наверное, самое время показать уже этот зловредный триггер.
8 дек 11, 15:58    [11730472]     Ответить | Цитировать Сообщить модератору
 Re: как вставить запись в таблицу даже если after insert триггер выбросил ошибку  [new]
KVVK
Member

Откуда:
Сообщений: 36
Можно обернуть в TRY CATCH

BEGIN TRY
-- TRIGGER code here
END TRY
BEGIN CATCH
-- Execute error
END CATCH;
8 дек 11, 16:04    [11730528]     Ответить | Цитировать Сообщить модератору
 Re: как вставить запись в таблицу даже если after insert триггер выбросил ошибку  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
tk123
Гавриленко Сергей Алексеевич
Без переписывания триггера - нет.

я могу его переписать. что именно нужно указать, чтобы тригер выполнялся отдельно от инсерт-запроса?
Отдельно не получится. Однако вы можете модифицировать логику работы так, чтобы делать падающие операции асинхронно (через джобы или сервис-брокер) и/или обернуть все в try/catch.
8 дек 11, 16:31    [11730717]     Ответить | Цитировать Сообщить модератору
 Re: как вставить запись в таблицу даже если after insert триггер выбросил ошибку  [new]
tk123
Member

Откуда:
Сообщений: 5
спасибо
8 дек 11, 16:47    [11730869]     Ответить | Цитировать Сообщить модератору
 Re: как вставить запись в таблицу даже если after insert триггер выбросил ошибку  [new]
Deff
Member

Откуда: Пермь
Сообщений: 18328
Если ошибка нужна для того, что бы вернуть информацию приложению можно использовать print.
9 дек 11, 08:14    [11733881]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить