sql而不是update:触发特定列

时间:2016-03-17 08:30:32

标签: sql-server triggers

我一直想知道是否有办法使用而不是更新触发器来更新和记录特定列,同时允许其他列的正常更新

1 个答案:

答案 0 :(得分:1)

您无法在表格的一部分上使用DML触发器。触发器适用于整个表。

但是,您可以使用所需逻辑的instead of触发器,然后直接从inserted更新包含数据的表。

一个简单的例子:

create table myTable
(
    colId int identity(1,1),
    col1 int, 
    col2 varchar(10)
)
go

create trigger t_iou on myTable instead of update
as
     update t
     set col1 = i.col1,
         col2 = i.col2 + ' ('+ cast(i.col1 as varchar) +')'
     from myTable t
     inner join inserted i on(t.colId = i.colId)
go