SQL Server - 仅在值不同时更新

时间:2010-05-04 15:12:25

标签: sql sql-server-2008 sql-update

在SQL Server 2008中,如果表中的字段的值与update语句中的值不同,如何更新表中的字段?

例如:

我的TableA包含FirstName列,其值为'Roger Moore',唯一ID为'007'。 现在,我正在调用一个更新语句,但只有当值是“Roger Moore”以外的其他值时,它才应更新'FirstName'字段。

TIA

3 个答案:

答案 0 :(得分:7)

update TableA 
set FirstName = 'Roger Moore' 
where ID = '007' 
    and FirstName <> 'Roger Moore' 

答案 1 :(得分:1)

通常不值得检查字段的更改

http://blogs.msdn.com/queryoptteam/archive/2006/07/07/659453.aspx

有条件地进行更新可能会带来锁定优势。

但是,如果你坚持这样做,你也可以用“而不是触发器”来比较每个插入的和当前的值来查看“在后台”这样做。

答案 2 :(得分:0)

你在谈论像这样的UPDATE语句吗?

UPDATE TableA
   SET FirstName = 'New Name'
 WHERE FirstName <> 'Roger Moore'

这没有考虑到您的唯一ID,但我认为这正是您所寻找的。