Моей следующей процедуре необходимо обновить попытки входа в систему, если вход не выполнен из-за неправильного пароля или статуса, если адрес электронной почты правильный.Эта процедура вызывается, только если в таблице есть только адрес электронной почты с солью.
SELECT
login.LOGIN_USER_ID,
login.LOGIN_EMAIL,
login.LOGIN_ACCOUNT_STATUS,
login.LOGIN_LOGIN_ATTEMPTS,
login.LOGIN_SALT,
GROUP_CONCAT(user_role.USER_ROLE_ROLE SEPARATOR ',') AS ROLES,
user_role.USER_ROLE_STATUS
FROM
login
INNER JOIN
user_role ON user_role.USER_ROLE_USER_ID = login.LOGIN_USER_ID
AND user_role.USER_ROLE_STATUS = @AccStatus
WHERE
login.LOGIN_EMAIL = @UserEmail
AND login.LOGIN_ACCOUNT_STATUS = @AccStatus
AND login.LOGIN_PASSWORD = @PassWD;
В случае сбоя входа в систему (электронная почта существует, но пароль неправильный)
UPDATE login
SET LOGIN_ACCOUNT_STATUS = (SELECT CASE (LOGIN_LOGIN_ATTEMPTS>@LoginAttempts) WHEN 1 THEN 'LOCKED' ELSE 'ACTIVE' END),
LOGIN_LOGIN_ATTEMPTS = (SELECT CASE (login.LOGIN_USER_ID>1) WHEN 1 THEN LOGIN_LOGIN_ATTEMPTS + 1 ELSE 0 END),
LOGIN_LAST_LOGIN_DATE = @TransactionDateTime,
LOGIN_LAST_LOGIN_LOCATION = null
WHERE LOGIN_EMAIL = @UserEmail;
Однако это не удается, поскольку я не сохраняю попытки и идентификатор пользователя в переменной.Я не знаю, как я мог, кроме чтения одного поля за раз с SET.Поскольку таблица уже прочитана выше, как я могу извлечь значения полей?