0

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

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

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

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

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

蒂亚

4

1 回答 1

0

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

IE

UPDATE myTargetTable
SET myTargetTable.myColumn = mySourceTable.newValue 
FROM mySourceTable JOIN myTargetTable on mySourceTable.ID = myTargetTable.ID
WHERE myTargetTable.myColumn != mySourceTable.newValue 
于 2013-03-01T09:00:34.600 回答