1

我正在编写一个登录函数,我需要它来使用很少的资源,所以我试图尽可能少地调用数据库。

我有以下选择语句:

SELECT TOP (1) fldID, fldActive, fldAdmin, fldTester, fldBanned, fldLastLogin
FROM   tblUsers
WHERE  fldName=@n AND fldPass=@p

如果是并且 fldBanned 为假,我需要更新fldLastLogin所选用户的字段。fldActivetrue

有没有办法进行此更新并仍然返回用户信息

4

2 回答 2

0

尝试使用UPDATE / SET语法作为子查询。 W3Schools有很好的教程。

于 2012-06-19T17:59:55.913 回答
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

如果有人有更快的解决方案,请分享

于 2012-06-19T19:51:20.280 回答