鉴于SQL Server不允许在触发器中修改逻辑INSERTED和DELETED表,是否有一种简单的方法来更改单个列的值而不必重写整个insert语句?
例如,我应用触发器的表有20列。我想修改INSERTED表中一列(每行)的值,然后将该行插入表中。我是否可以这样做而无需编写带有19列的插入语句以及我正在修改其值的一列?
答案 0 :(得分:7)
是的,只需使用“插入后”触发器,而不是“替代插入”触发器。
这样行就已经插入到表中了,所有你需要做的就是发出(精心设计的)更新语句,通常是通过内部连接到主键字段上的INSERTED表。
答案 1 :(得分:3)
向BradCs答案添加更多细节:
使用连接进行更新的语法有点难以理解
Update table
set columnA = inserted.columnA / 10
from table
inner join inserted on table.id = inserted.id