BEGIN
-- 检查 login_flag 是否被更新
IF UPDATE(login_flag)
BEGIN
DECLARE @tag INT, @user_no VARCHAR(14), @login_time DATETIME, @mSec INT;
-- 从 inserted 表中获取值
SELECT @tag = login_flag, @user_no = user_no FROM inserted;
-- 检查 login_flag 的值
IF @tag = 0
BEGIN
-- 获取用户的登录时间
SELECT @login_time = login_time FROM user_online WHERE user_no = @user_no;
-- 计算时间差(秒)
SET @mSec = DATEDIFF(SECOND, @login_time, GETDATE());
-- 更新用户现金金额,每 10 分钟增加 1 单位现金
UPDATE cash.dbo.user_cash
SET amount = amount + (ISNULL(@mSec, 0) / 600) -- 600 秒 = 10 分钟
WHERE user_no = @user_no;
END
ELSE
BEGIN
-- 插入新的在线用户记录
INSERT INTO user_online (user_no, login_time, login_flag) -- 请根据实际列名替换
VALUES (@user_no, GETDATE(), 0); -- 确保这里的列名与 user_online 表的结构一致
END
END
END;
