getDate ()가 트랜잭션 내의 루프 내의 각 반복에 대해 재평가 되나요?
-
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
미리 감사드립니다!
해결책
예.
재평가를 피하려면 루프 전에 변수에 값을 저장하고 대신 삽입하십시오.
제휴하지 않습니다 StackOverflow