我有简单的表格:
<div id="logo-row">
<ul>
<li class="header-logo">AAA</li>
<li><div id="button">BUTTON</div></li>
<li>LINK</li>
</ul>
</div>
Col001
Col002
...
ColNNN
...
Col001_DateTimeModified
Col002_DateTimeModified
...
ColNNN_DateTimeModified
保持值,ColXXX
保留修改(插入或更新)值的相应日期和时间。
更新一列的值时,将使用给定行的所有列值。我想更新修改时间列,仅当新的相应列更新时。所以,我有:
ColNNN_DateTimeModified
我可以确定,当评估行UPDATE MyTable
SET Col001 = S.[Col001]
,Col002 = S.[Col002]
,...
,Col001_DateTimeModified = IIF(Col001 = S.[Col001], Col001_DateTimeModified, GETUTCDATE())
,Col002_DateTimeModified = IIF(Col002 = S.[Col002], Col002_DateTimeModified, GETUTCDATE())
,...
FROM MyTable T
INNER JOIN NewData S
ON T.[id] = S.[id]
时,Col001_DateTimeModified = IIF(Col001 = S.[Col001], Col001_DateTimeModified, GETUTCDATE())
仍然保持其原始值,而不是Col001
行执行后的值吗?
答案 0 :(得分:3)
是。这些值不是按顺序更新,而是一次性更新。例如:
create table #test (x int, y int, z int)
insert into #test values (1,2,3)
update #test
set y= x + z, z= iif(y=2,100,200)
where x=1
select * from #test
x y z
1 4 100
如果值按顺序更新,则z的值为200。