getDate ()가 트랜잭션 내의 루프 내의 각 반복에 대해 재평가 되나요?

StackOverflow https://stackoverflow.com/questions/1847720

  •  13-09-2019
  •  | 
  •  

문제

트랜잭션 내에서 결과 세트를 통해 반복되는 시나리오가 있고 결과 세트를 통해 각 반복에 대해 테이블에 고유 한 DateTime 값을 삽입해야합니다. 그런 다음 루프를 통해 각 반복마다 동일합니까?

내 의사 코드는 다음과 같습니다.

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

미리 감사드립니다!

도움이 되었습니까?

해결책

예.

재평가를 피하려면 루프 전에 변수에 값을 저장하고 대신 삽입하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top