最近在工作中遇到了一個需求

          在執行數據庫操作時需要先判斷指定的數據是否存在,如果不存在則插入,存在則更新

          最開始使用的是三條SQL語句:

          1. SELECT bl_count,bl_src,bl_date,bl_topic FROM temp_table WHERE bl_topic=? AND bl_src=? AND bl_date=?;  
          2.   
          3. UPDATE temp_table SET bl_count=? WHERE bl_topic=? AND bl_src=? AND bl_date=?;  
          4.   
          5. INSERT INTO temp_table (bl_src,bl_date,bl_count,bl_topic) values(?,?,?,?)  
          邏輯是:
          1. if(SELECT!= null){  
          2.     UPDATE  
          3. }else{  
          4.     INSERT  
          5. }  

          后來leader提示還有新的方法,一條SQL語句就能搞定:

          1. INSERT INTO temp_table(bl_src,bl_date,bl_count,bl_topic) VALUES(?,?,?,?) ON DUPLICATE KEY UPDATE bl_count=bl_count+?;  

          但是有個前提就是:什么時候會執行update語句?在SQL語句中并沒有條件。

          后來在網上看到的,執行update語句的條件是insert語句的執行會造成唯一鍵的重復。

          所以,在創建表的時候還要加上唯一鍵的約束

          1. ALTER TABLE temp_table ADD CONSTRAINT c_topic_src_date UNIQUE(bl_topic,bl_src,bl_date);  

          這樣就能達到目的。

          posted on 2013-09-10 18:56 姚先進 閱讀(925) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
           
          主站蜘蛛池模板: 广德县| 墨脱县| 吉安县| 监利县| 揭阳市| 平阳县| 澄迈县| 安阳县| 彝良县| 交口县| 汕头市| 安多县| 清苑县| 永济市| 东辽县| 巴中市| 香港| 东兰县| 旬邑县| 永寿县| 永和县| 资溪县| 通江县| 交城县| 乐东| 五家渠市| 凤翔县| 麻城市| 鸡泽县| 文山县| 利辛县| 宣威市| 阜南县| 夏河县| 始兴县| 昂仁县| 涞源县| 民权县| 永州市| 张掖市| 吕梁市|