2012-04-27 10 views
1

は、私は非常に大きなテーブル(多数の行を)持っていると言うことができます更新中に真のgetDate()?

と私はこの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 

私はそれをどのように行うことができますか?

getDate()機能に言うすべてのスイッチがある(私たちcursorしたいいけない):

は「あなたの現在の値ではなくyouveはで始まっものを使用しますか」?

答えて

4

スカラーUDF内にラップして、各行に対して再評価されるようにすることができます。

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

INHO udf cant return getDate/dynamic functions ....または2005年ですか?私はランドで一度だけ試して問題が発生しました.... –

+0

2005年からUDFで 'getdate()'を使うことができました。 –

+0

@Soren saisそれは本当に価値があります。あなたは何を言っていますか ? –

0

ですが、実際の値です。 UPDATEはトランザクションで発生します。変更は1行ではなく1行でコミットされます。行を個別に更新したい場合、カーソルはまさにあなたが望むものです。

関連する問題