トランザクション内で結果セットをループしているシナリオがあり、結果セットの反復ごとにテーブル内に一意の日時値を INSERT する必要があります - GetDate() は毎回再計算されますか、それとも初回のみ計算されますか?ループの各反復で同じになりますか?
私の疑似コードは以下の通りです:
BEGIN TRANSACTION
GO
DECLARE @ID INT
DECLARE @table TABLE (/* Columns */)
WHILE (SELECT COUNT(*) FROM @table WHERE PROCESSED = 0) > 0
BEGIN
SELECT TOP 1 @ID = ID FROM @table WHERE PROCESSED = 0
-- INSERT GetDate() into child table at this point.
-- Will GetDate() be re-evaluated each time?
UPDATE @table SET PROCESSED = 1 WHERE ID = @ID
END
END TRANSACTION
GO
前もって感謝します!