如何让触发器在插入和更新时起作用?

How to have a trigger work on insert and update?

我有一个触发器,当 INSERTUPDATE 发生时,我试图将 update/insert 数据发送到一个特定的列。问题它似乎只适用于 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

我想通了...

当时我不认为它是相关的,但事实证明我错了。我最初的问题是我 INSERT 通过 SSIS 传输数据。显然我需要在我的 OLE DB Destination 中设置一个 属性 来触发我的 TRIGGERS.

我这样做的方法是从 here.

中找到的

这对我来说并不完全是干的,所以这里是需要做的事情的总结:

  1. 右键单击 OLE DB Destination > Show Advanced Editor
  2. Select Component Properties 选项卡
  3. Access Mode设置为OpenRowset Using FastLoad
  4. FastLoadOptions
  5. 中添加FIRE_TRIGGERS