表名:[user]
字段:user_id,user_state,leave_time
user_id为会员ID
user_state为会员在线状态,会员登陆时为1
leave_time为会员最近登陆时间请问怎么写一个触发器来判断,会员登陆时间超过10分钟,则user_state变为0.

解决方案 »

  1.   

    会员登陆时间超过10分钟,则user_state变为0-----------這個需要你在前台判斷,然後執行一條更新語句即可。
      

  2.   

    不用触发器,用作业(JOB)来实现定时处理。-------------------------------------------------------------------------------------
    企业管理器
      --管理
      --SQL Server代理
      --右键作业
      --新建作业
      --"常规"项中输入作业名称
      --"步骤"项
        --新建
        --"步骤名"中输入步骤名
        --"类型"中选择"Transact-SQL 脚本(TSQL)"
        --"数据库"选择执行命令的数据库
        --"命令"中输入要执行的语句:
          update [user] set user_state=0 where datediff(mi,leave_time,getdate())=10
        --确定
      --"调度"项
        --新建调度
        --"名称"中输入调度名称
        --"调度类型"中选择你的作业执行安排
          --如果选择"反复出现"
            --点"更改"来设置你的时间安排
    然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行设置方法:
    我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定.
      

  3.   

    这个用触发器好像不行吧!  可以考虑用job每分钟监测一下[user]这个表,如果会员最近登陆时间和当前时间比较,超过10分钟,就update这个user_state变为0.
      

  4.   

    建一个作业,每1分钟执行一下这个语句,误差不会超过1分钟update [user]
    set user_state = 0
    where leave_time <= datediff(mi,-10,getdate())
      

  5.   

    语句写错了,改改update [user]
    set user_state = 0
    where leave_time <= dateadd(mi,-10,getdate())
      

  6.   

    --修改一下SQL语句:
    update [user] set user_state=0 where user_state=1 and datediff(mi,leave_time,getdate())>=10
      

  7.   

    问题已解决,谢谢大家~libin_ftsafe(子陌红尘:TS for Banking Card)的方法感觉不错~
      

  8.   

    不用触发器 用作业就可以了
    点击 企业管理器->SQLSEVERD代理->作业->新建作业->输入名称test
    ->新建步奏->在命令拦输入:Insert Into table(State) values('0')
    ->然后再在调度中修改你要的时间就可以了