仅在值发生更改时才设置SQLServer更新

时间:2013-03-01 08:44:17

标签: sql sql-server tsql

我已经阅读了很多关于这个问题的答案,说如果你更新一个没有改变但可以做到的列并不重要,我想知道是否有一个不错的解决方案。

我们有一个更新过程,用于更新记录中的所有字段 - 其中一些字段可能与它们当前的值相同。

我们遇到的问题是我们有一个索引视图,其中该表是数千个子记录的父级,并且这些表中的一些字段位于该索引视图中。每次我们进行更新时,即使它实际上没有变化,它仍然在维护索引视图方面做了很多工作。

我希望能够进行更新设置,并且只有在值不同的情况下才能设置。不是where子句,因为我仍然希望更新其他字段。

我想Entity Framework在创建动态更新语句时会做这样的事情吗?对于使用存储过程进行更新的ADO.NET用户,是否有一个简单的解决方案?

TIA

1 个答案:

答案 0 :(得分:0)

如果没有看到您的代码,就很难看到您目前正在做什么,但我会包含类似WHERE table.value != newValue的内容。

即。

UPDATE myTargetTable
SET myTargetTable.myColumn = mySourceTable.newValue 
FROM mySourceTable JOIN myTargetTable on mySourceTable.ID = myTargetTable.ID
WHERE myTargetTable.myColumn != mySourceTable.newValue