在插入时,T-SQL(SQL Server 2016)触发列值更改

时间:2017-02-15 18:09:43

标签: sql sql-server triggers

我正在研究我的SSIS项目。我已成功设法将一些csv加载到我的数据库中(通过VS中的Integration Services),现在我正在尝试在数据库中创建一个触发器。

我想要发生的是:当列second_road_class的数量为-1时,我希望它变为6.我希望在插入过程中触发触发器。

我的触发器代码似乎在SSMS中调试好了!但是当我稍后再次尝试插入csv时,带有second_road_class的{​​{1}}列保持原样。

触发码:

-1

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用after insert触发器执行此操作。

create trigger accidentstrigger on [accidents]
after insert as 
begin;
    set nocount on;
    if exists (select 1 from inserted where [second_road_class] = '-1')
    begin;
        update a 
        set [second_road_class] = '6'
        from [accidents] as a
          inner join inserted i 
          /* change AccidentId to the Primary Key on accidents*/
            on a.AccidentId = i.AccidentId 
           and i.[second_road_class] = '-1';
    end;
end;
go

在rextester上使用pilots表的示例:http://rextester.com/XKX10184