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

Откуда:
Сообщений: 825
Здравствуйте.

Подскажите пожалуйста как можно игнорировать ошибку в теле триггера? BEGIN TRY не помогают почему-то

ALTER TRIGGER [dbo].[T_I]
   ON  [dbo].[T]
  INSTEAD OF INSERT AS  

BEGIN
  DECLARE @TA varchar(10) = 'D33'
	--SET NOCOUNT ON;
  BEGIN TRY
  DECLARE @SQL NVARCHAR(MAX) = N'update sdo.dbo.'+@TA+' set N = @var2 where id = @var3';
  EXECUTE sp_executesql @SQL, N'@var2 VARCHAR(30), @var3 VARCHAR(30)', @var2 = '123', @var3 = '1';
  END TRY
  BEGIN CATCH
    INSERT INTO [dbo].[ModiLog] (VAR1, VAR2, VAR3) VALUES ('5345', '535', '534')
  END CATCH

END


Ошибку вызывает переменная @TA - это название таблицы. Если таблица указана неверно, то мне надо чтобы триггер всё равно отработал, несмотря на ошибку.
2 апр 14, 10:11    [15819726]     Ответить | Цитировать Сообщить модератору
 Re: Игнорировать ошибку в триггере  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
А что мешает проверить наличие таблицы?
2 апр 14, 10:14    [15819743]     Ответить | Цитировать Сообщить модератору
 Re: Игнорировать ошибку в триггере  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
if object_id( ... ) is not null
2 апр 14, 10:14    [15819744]     Ответить | Цитировать Сообщить модератору
 Re: Игнорировать ошибку в триггере  [new]
Nechto
Member

Откуда:
Сообщений: 825
Не правильно написал
@TA - это название таблицы а название VIEW
2 апр 14, 10:17    [15819755]     Ответить | Цитировать Сообщить модератору
 Re: Игнорировать ошибку в триггере  [new]
Nechto
Member

Откуда:
Сообщений: 825
Принципе аналогично таблицы. Спасибо.
В до гонку вопросик, как проверить у этой таблицы наличия определённого поля?
2 апр 14, 10:22    [15819775]     Ответить | Цитировать Сообщить модератору
 Re: Игнорировать ошибку в триггере  [new]
iap
Member

Откуда: Москва
Сообщений: 46999
Nechto
Не правильно написал
@TA - это название таблицы а название VIEW
Что мешает проверить наличие представления?
IF OBJECT_ID(@TA ,'V') IS NOT NULL...
2 апр 14, 10:23    [15819777]     Ответить | Цитировать Сообщить модератору
 Re: Игнорировать ошибку в триггере  [new]
invm
Member

Откуда: Москва
Сообщений: 9395
Nechto
В до гонку вопросик, как проверить у этой таблицы наличия определённого поля?
if objectproperty(object_id(...), 'определенное поле', 'AllowsNull') is not null ...
2 апр 14, 10:28    [15819804]     Ответить | Цитировать Сообщить модератору
 Re: Игнорировать ошибку в триггере  [new]
iap
Member

Откуда: Москва
Сообщений: 46999
invm
Nechto
В до гонку вопросик, как проверить у этой таблицы наличия определённого поля?
if objectproperty(object_id(...), 'определенное поле', 'AllowsNull') is not null ...
IF COL_LENGTH(N'ИмяТаблицы',N'ИмяПоля') IS NOT NULL
2 апр 14, 10:32    [15819826]     Ответить | Цитировать Сообщить модератору
 Re: Игнорировать ошибку в триггере  [new]
Nechto
Member

Откуда:
Сообщений: 825
Спасибо Большое!
За кучу примеров.
2 апр 14, 10:59    [15819964]     Ответить | Цитировать Сообщить модератору
 Re: Игнорировать ошибку в триггере  [new]
invm
Member

Откуда: Москва
Сообщений: 9395
invm
if objectproperty(object_id(...), 'определенное поле', 'AllowsNull') is not null ...
Конечно же columnproperty.
2 апр 14, 11:10    [15820015]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить