我需要发送登录\登录\尝试和登录\帐户\状态总是不管密码(passwd)匹配。只有密码匹配时,以下脚本才能正常工作。当它不匹配时,它发送所有null(但我尝试和状态)。当电子邮件地址正确但密码和/或状态不匹配时,发送登录尝试和登录帐户状态的最佳方式是什么?
我可以添加另一个select语句,但最终结果应该是一行,其余字段为空。
以下是我的存储过程。
SELECT
login.LOGIN_USER_ID,
login.LOGIN_EMAIL,
login.LOGIN_LOGIN_ATTEMPTS,
login.LOGIN_ACCOUNT_STATUS,
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;
SET @USER_FOUND = found_rows();
UPDATE login SET
LOGIN_ACCOUNT_STATUS = (SELECT CASE (LOGIN_LOGIN_ATTEMPTS>@LoginAttempts) WHEN 1 THEN 'LOCKED' ELSE 'ACTIVE' END),
LOGIN_LOGIN_ATTEMPTS = (SELECT CASE (@USER_FOUND) WHEN 0 THEN LOGIN_LOGIN_ATTEMPTS + 1 ELSE 0 END),
LOGIN_LAST_LOGIN_DATE = (SELECT CASE (@USER_FOUND) WHEN 1 THEN @TransactionDateTime ELSE LOGIN_LAST_LOGIN_DATE END),
LOGIN_LAST_LOGIN_LOCATION = null
WHERE LOGIN_EMAIL=@UserEmail;
1条答案
按热度按时间wgx48brx1#
从我能猜到的问题中缺失的部分来看,你的代码运行得很好——这就是证据。
如果你在做一些不同的事情,请充实你的问题并适当地评论。