Могу ли я переписать эти заявления в лучшую сторону? - PullRequest
0 голосов
/ 14 марта 2012

Могу ли я переписать эти операторы лучше, используя один оператор обновления с регистром или чем-то в этом роде, или я просто оставляю их в таком виде и заключаю в транзакцию?

 DECLARE @currentFailedPassCount int = 
       ( SELECT FailedPasswordAttemptCount FROM Users WHERE Username=@username );
 UPDATE Users 
      SET FailedPasswordAnswerAttemptCount=FailedPasswordAnswerAttemptCount+1 
      WHERE Username=@username;
 IF(@currentFailedPassCount=5) 
      UPDATE Users 
      SET IsLockedOut=1 
      WHERE Username=@username;

Ответы [ 3 ]

4 голосов
/ 14 марта 2012

Примерно так:

UPDATE Users
SET FailedPasswordAnswerAttemptCount=FailedPasswordAnswerAttemptCount+1,
    IsLockedOut = CASE
                     WHEN FailedPasswordAnswerAttemptCount >= 4 THEN 1
                     ELSE 0
                  END
WHERE Username=@username;

Не думаю, что это читается так хорошо (личные предпочтения), но это одно утверждение.

0 голосов
/ 14 марта 2012
UPDATE Users 
SET 
    FailedPasswordAnswerAttemptCount=FailedPasswordAnswerAttemptCount + 1, 
    IsLockedOut=case 
        when FailedPasswordAnswerAttemptCount = 4 then 1 
        else IsLockedOut 
    end
WHERE Username=@username
0 голосов
/ 14 марта 2012

Попробуйте:

DECLARE @currentFailedPassCount int = ( SELECT FailedPasswordAttemptCount FROM Users      WHERE Username=@username );

IF(@currentFailedPassCount=4)
BEGIN
    UPDATE Users
    SET FailedPasswordAnswerAttemptCount=5, IsLockedOut=1
    WHERE Username=@username;
END
ELSE
BEGIN
    UPDATE Users
    SET FailedPasswordAnswerAttemptCount=FailedPasswordAnswerAttemptCount+1
    WHERE Username=@username;
END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...