需求是这样的,数据库里有个int类型的字段存放用户的积分
现在公司需求是如果满三年后该积分还没用过,就自动清空,我想用触发器来做,该怎么搞?

解决方案 »

  1.   

    用定时作业调用存储过程来做。定时作业的制定企业管理器 
    --管理 
    --SQL Server代理 
    --右键作业 
    --新建作业 
    --"常规"项中输入作业名称 
    --"步骤"项 
    --新建 
    --"步骤名"中输入步骤名 
    --"类型"中选择"Transact-SQL 脚本(TSQL)" 
    --"数据库"选择执行命令的数据库 
    --"命令"中输入要执行的语句: 
                           EXEC 存储过程名 ... --该存储过程用于创建表 --确定 
    --"调度"项 
    --新建调度 
    --"名称"中输入调度名称 
    --"调度类型"中选择你的作业执行安排 
    --如果选择"反复出现" 
    --点"更改"来设置你的时间安排  
    然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行 设置方法: 
    我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定. 
    存储过程大致如下;create proc my_proc
    as
      update tb set 积分字段 = 0 where datediff(yy,时间字段,getdate()) > 3 or (right(convert(varchar(10),时间字段,120),5) < right(convert(varchar(10),getdate(),120),5))
    go
      

  2.   

    数据库里有个int类型的字段存放用户的积分 
    现在公司需求是如果满三年后该积分还没用过,就自动清空,我想用触发器来做,该怎么搞?时间字段呢,?可以用作业做乌龟大侠说完了,触发器也类似的
      

  3.   

    建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  4.   

    CREATE TABLE [dbo].[c_guest](                --游客表
    [id] [int] IDENTITY(1,1) NOT NULL,
    [guest_name] [nvarchar](100) COLLATE Chinese_PRC_CI_AS NULL,
    [guest_tel] [nvarchar](200) COLLATE Chinese_PRC_CI_AS NULL,
    [guest_mobile] [nvarchar](100) COLLATE Chinese_PRC_CI_AS NULL,
    [guest_idcard] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
    [guest_birthday] [smalldatetime] NULL,
    [guest_sex] [nvarchar](4) COLLATE Chinese_PRC_CI_AS NULL,
    [guest_level] [int] NULL,
    [guest_sb] [tinyint] NULL CONSTRAINT [DF_c_guest_guest_sb]  DEFAULT (0),
    [s] [bit] NULL CONSTRAINT [DF_c_guest_s]  DEFAULT (1),
    [add_time] [smalldatetime] NULL CONSTRAINT [DF_c_guest_add_time]  DEFAULT (getdate()),DEFAULT (0),
    [contact_id] [int] NULL,
    [integral] [int] NULL CONSTRAINT [DF_c_guest_integral]  DEFAULT (0),
    [sale_sb] [int] NULL CONSTRAINT [DF_c_guest_sale_sb]  DEFAULT (0),
    [guest_home_adr] [varchar](200) COLLATE Chinese_PRC_CI_AS NULL,
    [card_id] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL)
    数据库是用的sql2005表结构是上面的,积分字段是integral,现在的想法是如果用户在三年内没有任何消费记录,就自动清空他的积分,各位能不能给点我开发思路?
      

  5.   

    三年,好长时间哦!
    在用户注册的时候建立触发器,该触发器包含 3*365 次 waitfor delay '24:0:0' 操作!
      

  6.   

    楼上的各位能说的详细些吗?我接触asp.net没多长时间,作业是什么?
      

  7.   

    我的sql2005上没有作业?按照楼上的步骤操作,我连的是别人的机器没有作业吗?