1ALTER  PROCEDURE dbo.aspnet_Membership_UpdateLastLoginAndActivityDates --更新最近登陆和活跃时间
 2    @ApplicationName          NVARCHAR(256),
 3    @UserName                 NVARCHAR(256),
 4    @TimeZoneAdjustment       INT
 5AS
 6BEGIN
 7    DECLARE @UserId UNIQUEIDENTIFIER
 8    SELECT  @UserId = NULL
 9    SELECT  @UserId = u.UserId
10    FROM    dbo.aspnet_Membership m, dbo.aspnet_Users u, dbo.aspnet_Applications a
11    WHERE   LoweredUserName = LOWER(@UserNameAND
12            u.ApplicationId = a.ApplicationId  AND
13            LOWER(@ApplicationName= a.LoweredApplicationName AND
14            u.UserId = m.UserId
15     ---查询符合条件的用户ID(就是用户名=@UserName的)
16     
17    IF (@UserId IS NULL--如果不存在,返回
18    BEGIN
19        RETURN
20    END
21
22    DECLARE @TranStarted   BIT 
23    SET @TranStarted = 0
24
25    IF@@TRANCOUNT = 0 )  --如果当前活动事务为0,开始事务,设置事务参数为1
26    BEGIN
27        BEGIN TRANSACTION
28        SET @TranStarted = 1
29    END
30    ELSE
31      SET @TranStarted = 0
32
33    DECLARE @DateTimeNowUTC DATETIME     --声明并获取当前时间
34    EXEC dbo.aspnet_GetUtcDate @TimeZoneAdjustment@DateTimeNowUTC OUTPUT
35
36    UPDATE  dbo.aspnet_Membership
37    SET     LastLoginDate = @DateTimeNowUTC
38    WHERE   UserId = @UserId ---更新此用户的最近登陆时间
39     
40    IF@@ERROR <> 0 ) --如果有错误,回滚
41        GOTO Cleanup
42
43    UPDATE  dbo.aspnet_Users
44    SET     LastActivityDate = @DateTimeNowUTC
45    WHERE   @UserId = UserId ----更新此用户的最近活跃时间
46
47    IF@@ERROR <> 0 )   --如果有错误,回滚
48        GOTO Cleanup
49
50    IF@TranStarted = 1 )
51    BEGIN
52    SET @TranStarted = 0
53    COMMIT TRANSACTION
54    END
55
56    RETURN
57
58Cleanup:
59
60    IF@TranStarted = 1 )
61    BEGIN
62        SET @TranStarted = 0
63        ROLLBACK TRANSACTION
64    END
65
66    RETURN -1
67
68END
posted on 2006-08-31 10:02  MainIsUsed  阅读(294)  评论(0编辑  收藏  举报