我正在编写一个登录函数,我需要它使用非常少的资源,所以我试图尽可能少地调用数据库。
我有以下选择声明:
SELECT TOP (1) fldID, fldActive, fldAdmin, fldTester, fldBanned, fldLastLogin
FROM tblUsers
WHERE fldName=@n AND fldPass=@p
如果fldLastLogin
为fldActive
且fldBanned为false,我需要更新所选用户的true
字段。
有没有办法更新并仍然让它返回用户信息?
答案 0 :(得分:0)
尝试使用UPDATE / SET
语法作为子查询。 W3Schools有很棒的教程。
答案 1 :(得分:0)
我找到了解决方案
DECLARE @tbl TABLE (fldID int, fldActive bit, fldAdmin bit, fldTester bit, fldBanned bit, fldLastLogin datetime)
INSERT @tbl SELECT TOP (1) fldID, fldActive, fldAdmin, fldTester, fldBanned, fldLastLogin
FROM luka42_data.luka42_luka42.tblUsers
WHERE (fldName = @n) AND (fldPass = @p)
IF (SELECT COUNT(*) FROM @tbl)>0 AND (SELECT fldActive from @tbl)=1 AND (SELECT fldBanned from @tbl)=0
BEGIN
UPDATE luka42_data.luka42_luka42.tblUsers SET fldLastLogin=@t;
END
SELECT * FROM @tbl
如果某人有更快的解决方案,请分享