2012-04-27 28 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發生在交易中;更改是一次性完成而不是每一行。如果你想單獨更新行,一個光標正是你想要的。