转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> Sql Server >> 正文
用SQL SERVER 触发器+作业 实现用户积分的透明管理         

用SQL SERVER 触发器+作业 实现用户积分的透明管理

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1058 更新时间:2007/11/14 13:08:18
前一段给客户做了一个,客户管理系统,系统里设计到了用户的积分问题。积分要求是:1、用户每消费一元,积分自动加12、从用户注册日开始,每过 一天,用户的积分自动加1。3、有特殊原因,管理员可以通过后台给用户加分或减分。4、积分可以用来兑奖,兑奖后,自动减去相应的积分。 涉及到4个表:1、clubuser用户表,2、consumelog记录用户的消费日志,3、scoreadd管理员为用户加的分。4、prizelog用户兑换过的奖品。 原来的系统实现是:要求1:他们的消费记录通常是导入的,每次导入后,需要重新计算一下所有用户的积分。要求2:用APPLICATION保存最后更新用户积分的时间,然后和当天判断,如果是不是当天,就给用户加分,设置APPLICATION为当天,如果是,就不进行操作。要求3:管理员为某个用户加过分以后,重新计算一下这个用户的积分。要求4:用户兑奖后,要重新计算一下他的积分。 感觉不是他合理:1、导入后计算所有用户的积分不合理,因为,计算积分是很麻烦的,要把用户的消费积分,在网积分,管理员加的积分全部加起来,然后减去消费积分得出来,写入用户表。如果用户多了,消费记录多了,算起来要好几分钟。2、每次都要判断APPLCATION的状态,感觉不合理。3,4也不是太合理,都要重新计算用户的积分,感觉不合理。 所以做了调整。 1、3、4分别在表,consumelog,scoreadd,prizelog表中写触发器2、建立一个作业,在每天0:00:00的时候为所有用户加1分。 实现细节:1、表 consumelog 触发器 添加记录CREATE TRIGGER  addscore ON [dbo].[consumelog]
FOR INSERT
AS
declare @num as int
declare @uid as int
select @num=cmoney,@uid=userid from [inserted]
update clubuser set score=score+@num/2 where id=@uid删除记录CREATE TRIGGER decscore ON [dbo].[consumelog]
FOR DELETE
AS
declare @num as int
declare @uid as int
select @num=cmoney,@uid=userid from [deleteed]
update clubuser set score=score-@num where id=@uid
3、scoreadd触发器添加记录CREATE TRIGGER  otheraddscore ON [dbo].[scoreadd]
FOR INSERT
AS
declare @num int
declare @uid int
select @num=score,@uid=userid from [inserted]
update clubuser set score=score+@num where id=@uid
(这个表不存在删除) 4、prizelog触发器添加记录CREATE TRIGGER prizedecscore ON [dbo].[prizelog]
FOR INSERT
AS
declare @num int
declare @uid int
declare @prid int
select @prid=prizeid,@uid=userid from [inserted]
select @num=Score from prize where id=@prid
update clubuser set score=score-@num where id=@uid 删除记录CREATE TRIGGER prizeaddscore ON [dbo].[prizelog]
FOR Delete
AS
declare @num int
declare @uid int
declare @prid int
select @prid=prizeid,@uid=userid from [deleted]
if @@rowcount>0
 begin
   select @num=score from prize where id=@prid
   update clubuser set score=score+@num where id=@uid
 end 2、作业的建立SQL SERVER--》管理--》SQL SERVER代理--》作业--》新建作业常规 --名称:”每天添加金色俱乐部会员积分“步骤--》新建...--》名称 ”添加分数"--》类型:TSQL--》数据库:你要操作的数据库--》命令:update clubuser set score=score+1调度 --》名称--》调度类型--》反复出现--》每天1次-->时间:0:00:00  点 确定保存。 在 作业列表中就有一个 作业,名称是 每天添加金色俱乐部会员积分启动该作业前要先启动SQL SERVERAGENT,并设置为随系统启动,OK了。  这样做以后,只需要添加消费记录,加分记录,领取奖品的记录就可以了,不用每次操作都要考虑分数了。


[聊天工具]企业邮件系统的利器----FoxMail Server  [系统软件]OPEN SERVER 5.0.5安装EXP300阵列柜
[系统软件]关于Windows2000Server的灾难恢复  [常用软件][网络]下载服务革命性风暴Poco Server评测
[C语言系列]动态创建SQL Server数据库、表、存储过程等架构信…  [C语言系列]SQL Server到DB2连接服务器的实现
[C语言系列]SQL Server到SYBASE连接服务器的实现  [C语言系列]SQL Server到SQLBASE连接服务器的实现
[C语言系列]SQL Server连接VFP数据库的实现  [C语言系列]ASP+SQL Server之图象数据处理
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台