1

非常に大きなテーブル(多くの行)があるとしましょう

そして私はこのSQLコマンドを持っています:

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

2 に答える 2

4

スカラーUDF内にラップして、行ごとに再評価することができます。

CREATE FUNCTION dbo.GETDATE()
RETURNS DATETIME    
AS
BEGIN
    RETURN GETDATE();
END
于 2012-04-27T14:49:52.883 に答える
0

ただし、これ「真の」値です。UPDATEトランザクションで発生します。変更は、行ごとではなく、一度にコミットされます。行を個別に更新する場合は、カーソルがまさに必要なものです。

于 2012-04-27T14:49:40.147 に答える