2012-03-14 5 views
0

하나의 업데이트 문을 사용하여 더 나은 방법으로이 문을 다시 작성할 수 있습니까? 아니면 그냥 그대로두고 트랜잭션으로 래핑 할 수 있습니까? 이 같은이 문장을 더 좋은 방법으로 다시 쓸 수 있습니까?

DECLARE @currentFailedPassCount int = 
     (SELECT FailedPasswordAttemptCount FROM Users WHERE [email protected]); 
UPDATE Users 
     SET FailedPasswordAnswerAttemptCount=FailedPasswordAnswerAttemptCount+1 
     WHERE [email protected]; 
IF(@currentFailedPassCount=5) 
     UPDATE Users 
     SET IsLockedOut=1 
     WHERE [email protected]; 

답변

4

뭔가 :

UPDATE Users 
SET FailedPasswordAnswerAttemptCount=FailedPasswordAnswerAttemptCount+1, 
    IsLockedOut = CASE 
        WHEN FailedPasswordAnswerAttemptCount >= 4 THEN 1 
        ELSE 0 
        END 
WHERE [email protected]; 

나는 그것을 생각하지 않는다는 잘 (개인 취향) 읽고 그러나 그것은 하나의 문입니다.

+0

당신은'FailedPasswordAnswerAttemptCount + = 1' 2008 년에 사용할 수 있습니다. –

0

봅니다 :

DECLARE @currentFailedPassCount int = (SELECT FailedPasswordAttemptCount FROM Users  WHERE [email protected]); 

IF(@currentFailedPassCount=4) 
BEGIN 
    UPDATE Users 
    SET FailedPasswordAnswerAttemptCount=5, IsLockedOut=1 
    WHERE [email protected]; 
END 
ELSE 
BEGIN 
    UPDATE Users 
    SET FailedPasswordAnswerAttemptCount=FailedPasswordAnswerAttemptCount+1 
    WHERE [email protected]; 
END 
0
UPDATE Users 
SET 
    FailedPasswordAnswerAttemptCount=FailedPasswordAnswerAttemptCount + 1, 
    IsLockedOut=case 
     when FailedPasswordAnswerAttemptCount = 4 then 1 
     else IsLockedOut 
    end 
WHERE [email protected] 
관련 문제