【问题标题】:SQL Server instead of insert triggers - is there an easy way to modify a single column?SQL Server 而不是插入触发器 - 是否有一种简单的方法来修改单个列?
【发布时间】:2010-04-28 14:01:37
【问题描述】:

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

例如,我应用触发器的表有 20 列。我想修改 INSERTED 表中一列(每行)的值,然后将该行插入表中。我可以在不编写包含 19 列加上我正在修改其值的一列的插入语句的情况下这样做吗?

【问题讨论】:

    标签: sql-server triggers


    【解决方案1】:

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

    这样该行已经被插入到表中,您所要做的就是发出一个(精心设计的)更新语句,通常通过主键字段上的 INSERTED 表进行内连接。

    【讨论】:

      【解决方案2】:

      要向 BradCs 答案添加更多细节:

      使用连接进行更新的语法有点奇怪

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

      【讨论】:

        猜你喜欢
        • 2022-11-21
        • 1970-01-01
        • 2019-03-17
        • 2018-09-09
        • 1970-01-01
        • 1970-01-01
        • 2021-06-27
        • 1970-01-01
        • 2014-11-18
        相关资源
        最近更新 更多