SQL Server而不是插入触发器 - 是否有一种简单的方法来修改单个列?

时间:2010-04-28 14:01:37

标签: sql-server triggers

鉴于SQL Server不允许在触发器中修改逻辑INSERTED和DELETED表,是否有一种简单的方法来更改单个列的值而不必重写整个insert语句?

例如,我应用触发器的表有20列。我想修改INSERTED表中一列(每行)的值,然后将该行插入表中。我是否可以这样做而无需编写带有19列的插入语句以及我正在修改其值的一列?

2 个答案:

答案 0 :(得分:7)

是的,只需使用“插入后”触发器,而不是“替代插入”触发器。

这样行就已经插入到表中了,所有你需要做的就是发出(精心设计的)更新语句,通常是通过内部连接到主键字段上的INSERTED表。

答案 1 :(得分:3)

向BradCs答案添加更多细节:

使用连接进行更新的语法有点难以理解

Update table
  set columnA = inserted.columnA / 10
from table
inner join inserted on table.id = inserted.id