2012-04-27 30 views
1

可以说我有非常大的表(许多行)TrueDate()在更新时?

,我有这个SQL CMD:

update myTable set name='Royi' , dateUpadted=getDate() 

再次,许多行... - 时间更新整个表:3分钟。 (已建立索引)

我的目标是:

每个更新的行应该有它真正秒/毫秒差)getdate()!

所以我的愿望结果:

name | dateUpadated 
___________________ 
royi |  12:00:00 -- getDate() here was 12:00:00 
... |   ... 
... |   ... 
... |   ... 
royi |  12:01:13 -- getDate() here was 12:01:13 
... |   ... 
... |   ... 
... |   ... 
royi |  12:03:01 -- getDate() here was 12:03:01 

我该怎么办呢?

(我不想给我们cursor

是有其说要getDate()功能的开关:

“使用当前的值,而不是该你已开始与一个”?

回答

4

您可以将其包装在标量UDF中,以便为每行重新评估它。

CREATE FUNCTION dbo.GETDATE() 
RETURNS DATETIME  
AS 
BEGIN 
    RETURN GETDATE(); 
END 
+0

INHO udf不能返回getDate /动态函数....还是在2005年?我试了一次与兰德,并出现了一个问题.... – 2012-04-27 14:50:37

+0

自2005+以来,能够在UDF中使用'getdate()' – 2012-04-27 14:50:52

+0

@Soren sais它已经是它的真正价值了......我不这么认为......你说什么 ? – 2012-04-27 14:53:05

0

“真实”的价值,虽然。 UPDATE发生在交易中;更改是一次性完成而不是每一行。如果你想单独更新行,一个光标正是你想要的。