2015-07-30 2 views
2

У меня есть триггер, который я пытаюсь получить до update/insert данных в один конкретный столбец всякий раз, когда происходит или UPDATE. Проблема в том, что она работает только на UPDATE ...Как запустить триггер для вставки и обновления?

Это действительно первый триггер, который я когда-либо писал, и я не могу его понять. Может ли кто-нибудь помочь мне, где я ошибаюсь?

Вот триггер:

CREATE TRIGGER [dbo].[TEST_TRIGGER] 
    ON [dbo].[TEST_TABLE] 
    AFTER INSERT,UPDATE 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

    UPDATE [dbo].TEST_TABLE 
    SET HASH_VALUE = HASHBYTES('md5', 
     CAST(ISNULL([COL_1], -1) as nvarchar(255)) 
     + CAST(ISNULL([COL_2], -1) as nvarchar(255)) 
     + CAST(ISNULL([COL_3], -1) as nvarchar(255)) 
     + CAST(ISNULL([COL_4], -1) as nvarchar(255)) 
    ) 
    WHERE ID IN (SELECT ID FROM inserted) 

END 
GO 
+2

Я не вижу никаких проблем с этим - и на самом деле, я просто попробовал это на SQL Server 2014, и он работает отлично, насколько я могу видеть. Как выглядит ваш оператор 'INSERT', который, похоже, не работает для вас? –

+0

@marc_s - Спасибо за комментарий. Оказывается, мой спусковой механизм был полностью в порядке. Я добавил свой ответ внизу для чьи-либо будущие интересы, если вы хотите посмотреть, что я сделал ... – scapegoat17

ответ

1

Я был в состоянии понять это ...

Я не думаю, что в то время, когда это было необходимо, но оказывается, что я был неправ. Моя первоначальная проблема заключалась в том, что я был INSERT данных, полученных через SSIS. По-видимому, мне нужно было установить свойство в моем OLE DB Destination, чтобы запустить мой TRIGGERS.

Способ, которым я это сделал, был найден с here.

Это не совсем банальный для меня, так вот резюме того, что должно быть сделано:

  1. правой кнопкой мыши OLE DB Destination>Show Advanced Editor
  2. Выберите Component Properties Вкладка
  3. Установите Access Mode в OpenRowset Using FastLoad
  4. Добавить FIRE_TRIGGERS в FastLoadOptions
Смежные вопросы