<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ?
    前一段給客戶做了一個,客戶管理系統,系統里設計到了用戶的積分問題。
    積分要求是:
    1、用戶每消費一元,積分自動加1
    2、從用戶注冊日開始,每過 一天,用戶的積分自動加1。
    3、有特殊原因,管理員可以通過后臺給用戶加分或減分。
    4、積分可以用來兌獎,兌獎后,自動減去相應的積分。
    ?
    涉及到4個表:
    1、clubuser用戶表,2、consumelog記錄用戶的消費日志,3、scoreadd管理員為用戶加的分。4、prizelog用戶兌換過的獎品。
    ?
    原來的系統實現是:
    要求1:
    他們的消費記錄通常是導入的,每次導入后,需要重新計算一下所有用戶的積分。
    要求2:
    用APPLICATION保存最后更新用戶積分的時間,然后和當天判斷,如果是不是當天,就給用戶加分,設置APPLICATION為當天,如果是,就不進行操作。
    要求3:
    管理員為某個用戶加過分以后,重新計算一下這個用戶的積分。
    要求4:
    用戶兌獎后,要重新計算一下他的積分。
    ?
    感覺不是他合理:
    1、導入后計算所有用戶的積分不合理,因為,計算積分是很麻煩的,要把用戶的消費積分,在網積分,管理員加的積分全部加起來,然后減去消費積分得出來,寫入用戶表。如果用戶多了,消費記錄多了,算起來要好幾分鐘。
    2、每次都要判斷APPLCATION的狀態(tài),感覺不合理。
    3,4也不是太合理,都要重新計算用戶的積分,感覺不合理。
    ?
    所以做了調整。
    ?
    1、3、4分別在表,consumelog,scoreadd,prizelog表中寫觸發(fā)器
    2、建立一個作業(yè),在每天0:00:00的時候為所有用戶加1分。
    ?
    實現細節(jié):
    1、表 consumelog 觸發(fā)器
    添加記錄
    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觸發(fā)器
    添加記錄
    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觸發(fā)器
    添加記錄
    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、作業(yè)的建立
    SQL SERVER--》管理--》SQL SERVER代理--》作業(yè)--》新建作業(yè)
    常規(guī) --名稱:”每天添加金色俱樂部會員積分“
    步驟--》新建...--》名稱 ”添加分數'--》類型:TSQL--》數據庫:你要操作的數據庫--》命令:
    update clubuser set score=score+1
    調度 --》名稱--》調度類型--》反復出現--》每天1次-->時間:0:00:00
    ?
    點 確定保存。
    ?
    在 作業(yè)列表中就有一個 作業(yè),名稱是 每天添加金色俱樂部會員積分
    啟動該作業(yè)前要先啟動SQL SERVERAGENT,并設置為隨系統啟動,OK了。
    ?
    這樣做以后,只需要添加消費記錄,加分記錄,領取獎品的記錄就可以了,不用每次操作都要考慮分數了。
    posted on 2007-01-20 00:48 jackstudio 閱讀(652) 評論(0)  編輯  收藏 所屬分類: Database
    主站蜘蛛池模板: 免费无码一区二区三区| 免费人成网站在线观看不卡| 亚洲视频免费观看| 午夜亚洲www湿好大| 久草免费福利视频| 亚洲人成影院在线| 亚洲精品免费在线视频| 香蕉大伊亚洲人在线观看| 国产美女在线精品免费观看| 中文无码亚洲精品字幕| 青草草在线视频永久免费| 理论亚洲区美一区二区三区| 亚洲AⅤ优女AV综合久久久| 九九热久久免费视频| 亚洲A∨无码一区二区三区| 黄网站色在线视频免费观看| 亚洲人成图片网站| 国产jizzjizz视频全部免费| 深夜免费在线视频| 久久精品国产精品亚洲色婷婷| 无码一区二区三区免费| 亚洲国产成人久久77| 免费看美女让人桶尿口| 又大又硬又粗又黄的视频免费看| 亚洲日韩人妻第一页| 久久精品无码精品免费专区| 77777亚洲午夜久久多喷| 免费又黄又硬又爽大片| 人妻在线日韩免费视频| 91亚洲视频在线观看| 国产成人aaa在线视频免费观看 | 亚洲综合国产一区二区三区| 国产99在线|亚洲| 亚洲人成图片网站| 99ee6热久久免费精品6| 亚洲免费二区三区| 亚洲精品国产精品乱码不卡| 99re6在线视频精品免费下载| 国产成人亚洲综合在线| 亚洲av午夜福利精品一区| 在线A级毛片无码免费真人|