给出基本更新,例如:
update [X]
set A = @a
, B = @b
是否有使用单个UPDATE来设置A或B 单独的方法?
以下内容也会更新两个字段,尽管它可能会显示所需的意图。这在逻辑上是有效的,并且无论是否提供相同的值,SQL Server都会很乐意执行更新。
update [X]
set A = CASE WHEN @a IS NOT NULL THEN @a ELSE A END -- could be "a more complex" rule
, B = CASE WHEN @b IS NOT NULL THEN @a ELSE B END
我知道这可以通过多个UPDATE语句或动态SQL处理。
是否有另一种方法可以使字段全部[[not(逻辑或其他方式)更新?]
可以提出一个论点,如果要设置any
值,则整个行已被修改,因此适当的WHERE在语义上等同于请求。数据页面都被更新。
对于您想要的,这是典型的解决方案:update [X]
set A = coalesce(@a, A),
B = coalesce(@b, B)
where @a is not null or @b is not null;