考虑到表有100列,我想防止更新,如果旧值与新值有效相同这是方法将具有执行的好处,因为它从我们更新的同一个表中获取?。任何建议?
Update MyTable
SET Col1=CASE WHEN mt.Col1 !=mt.Col1 THEN i.Col1 else mt.Col1,
Col2=CASE WHEN mt.Col2 !=mt.Col2 THEN i.Col2 else mt.Col2,
.
.
Col100 =
FROM MyTable mt JOIN INSERED i ON mt.id=i.id
答案 0 :(得分:0)
只有当两个表的特定列不相等时,才可以使用where condition更新。
UPDATE MyTable
SET mt.Col1 = i.Col1, mt.Col2 = i.Col2, ....
FROM
MyTable mt
JOIN
INSERED i
ON (mt.id=i.id)
WHERE mt.Col1 != i.Col1
答案 1 :(得分:0)
考虑使用两个表中的时间戳列指示上次修改日期时间,并更改您的更新以将其包含在where。
更新MyTable mt.Col1 = i.Col1, mt.Col2 = i.Col2, 。 。 Col100 = 来自MyTable mt JOIN INSERED i on mt.id = i.id. 其中mt.FecMod!= i.FecMod