Sql server sql而不是update:在特定列上触发
我一直在想,是否有一种方法可以使用instead of update触发器来更新和记录特定的列,同时对其他列进行常规更新您不能对表的某一部分使用DML触发器。触发器用于整个表 但是,您可以使用Sql server sql而不是update:在特定列上触发,sql-server,triggers,Sql Server,Triggers,我一直在想,是否有一种方法可以使用instead of update触发器来更新和记录特定的列,同时对其他列进行常规更新您不能对表的某一部分使用DML触发器。触发器用于整个表 但是,您可以使用而不是触发器,使用您想要的任何逻辑,然后直接使用插入的中的数据更新表 一个简单的例子: create table myTable ( colId int identity(1,1), col1 int, col2 varchar(10) ) go create trigger t
而不是触发器,使用您想要的任何逻辑,然后直接使用插入的中的数据更新表
一个简单的例子:
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
可能是这种情况下最好的方法-计算列…使用而不是触发器,这样您可以始终将特定列更新为choosen值,其余部分可以从虚拟表中插入,而且这不需要回滚更新的数据。我如何才能做到这一点?你能给我举个例子吗?