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

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

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

    隨筆-57  評論-202  文章-17  trackbacks-0
          在工作中,經(jīng)常需要寫充值這樣的功能,這個功能無非是要做下面四件事:
          1. 判斷是否可以充值;
          2. 將充值卡的余額減去充值金額;
          3. 將用戶的余額加上充值金額;
          4. 寫日志。
          在實際的應(yīng)用中,還是有不少地方需要考慮的,主要有以下幾個方面:
          1. 這四步中,后面三步都涉及到數(shù)據(jù)庫的操作,所以必須在一個事務(wù)中完成;
          2. 后面三步的執(zhí)行順序是需要考慮的,我覺得比較好的順序是這樣的:
             a. 寫日志;
             b. 將充值卡的余額減去充值金額;
             c. 將用戶的余額加上充值金額。
          由于寫日志操作是不涉及到金額的,即使失敗了,對系統(tǒng)也沒有什么很大的影響,所以我放在第一步執(zhí)行。至于是先給用戶增加金額還是先減去充值卡的金額,似乎誰先誰后都沒有什么關(guān)系。不過,其實有一個微妙的地方,如果先給用戶加上余額而不幸在減去充值卡的余額時出錯,甚至很不幸數(shù)據(jù)庫也出了問題,沒有回滾事務(wù)。那么就等于用戶平白無故的多了錢,用戶當(dāng)然很高興,也許會投訴,也許不會投訴(是我肯定不投訴,高興都來不及呢)。如果是相反的情況,那么用戶必然投訴,也就可以發(fā)現(xiàn)系統(tǒng)的問題。所以我覺得應(yīng)該先減去充值卡的余額。
          3. 在執(zhí)行更改充值卡的余額時,必須要在數(shù)據(jù)庫中進行加減操作,而且要在數(shù)據(jù)庫中再檢查一遍充值卡的余額是否足夠。執(zhí)行的SQL語句類似下面:
          UPDATE card SET card_balance=card_balance-? WHERE card_number=? AND card_balance>=?
          由于現(xiàn)在大部分的系統(tǒng)都是多進程或者多線程的,有可能在你提交之前,有其它的進程或者線程更新了數(shù)據(jù)庫中的記錄,所以如果不在數(shù)據(jù)庫中進行加減操作,不再檢查一遍余額是否充足,會給系統(tǒng)帶來隱患。
    posted on 2005-05-20 18:19 小米 閱讀(506) 評論(0)  編輯  收藏 所屬分類: 其它
    主站蜘蛛池模板: 亚洲午夜无码毛片av久久京东热 | 成人免费视频试看120秒| 国产亚洲综合一区柠檬导航| 理论亚洲区美一区二区三区| 相泽南亚洲一区二区在线播放| 岛国大片免费在线观看| 亚洲乱妇熟女爽到高潮的片| 国产在线19禁免费观看国产 | 亚洲免费观看视频| 国产无遮挡又黄又爽免费网站| 在线播放亚洲第一字幕| 免费人成黄页在线观看日本| 亚洲国产精品久久久久久| 国产精品免费高清在线观看| 亚洲欧洲一区二区| 黄色免费网站网址| 久久亚洲精品无码gv| 亚洲国产精品成人AV无码久久综合影院| 亚洲av无码一区二区乱子伦as| 精品女同一区二区三区免费播放| 亚洲A∨午夜成人片精品网站| 亚洲最大的成人网| 国产美女精品视频免费观看 | 日本最新免费网站| 亚洲成a人在线看天堂无码| 插鸡网站在线播放免费观看| 亚洲尹人香蕉网在线视颅| 中国videos性高清免费| 久久国产精品亚洲综合| 中文字幕免费在线观看动作大片| 亚洲Av永久无码精品三区在线| 免费黄色网址网站| 免费亚洲视频在线观看| 亚洲精品一品区二品区三品区| 国产成人精品免费午夜app| 看一级毛片免费观看视频| 亚洲国产无套无码av电影| 永久免费毛片在线播放| 亚洲激情在线视频| 日韩中文字幕在线免费观看| 色欲aⅴ亚洲情无码AV蜜桃|