我有一个触发器,当update/insert
或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
答案 0 :(得分:1)
我能够弄明白......
我当时并不认为它是相关的,但事实证明我错了。我最初的问题是我通过SSIS INSERT
数据。显然,我需要在OLE DB Destination
中设置一个属性来解雇我的TRIGGERS
。
我这样做的方式是从here找到的。
对我来说,它并没有完全切断和干燥,所以这里总结了需要做的事情:
OLE DB Destination
> Show Advanced Editor
Component Properties
标签Access Mode
设为OpenRowset Using FastLoad
FIRE_TRIGGERS
FastLoadOptions
醇>