如何在插入和更新上有一个触发器工作



我有一个触发器,当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

我终于明白了…

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

我做这件事的方法是从这里找到的。

对我来说,这并不是一成不变的,所以这里是需要做的总结:

  1. 右击OLE DB Destination> Show Advanced Editor
  2. 选择Component Properties标签
  3. 设置Access ModeOpenRowset Using FastLoad
  4. FastLoadOptions
  5. 中添加FIRE_TRIGGERS

相关内容

最新更新