分享
 
 
 

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

王朝mssql·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

前一段给客户做了一个,客户管理系统,系统里设计到了用户的积分问题。

积分要求是:

1、用户每消费一元,积分自动加1

2、从用户注册日开始,每过 一天,用户的积分自动加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了。

这样做以后,只需要添加消费记录,加分记录,领取奖品的记录就可以了,不用每次操作都要考虑分数了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有