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

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

          最開始使用的是三條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 姚先進 閱讀(920) 評論(0)  編輯  收藏

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


          網站導航:
           
           
          主站蜘蛛池模板: 维西| 高青县| 辽源市| 若尔盖县| 旬阳县| 惠安县| 台南市| 宁德市| 拜泉县| 松滋市| 达拉特旗| 临桂县| 阜新| 河津市| 海伦市| 烟台市| 永康市| 岱山县| 海盐县| 池州市| 榆社县| 那曲县| 防城港市| 景洪市| 东源县| 勃利县| 呼和浩特市| 上思县| 凤城市| 丘北县| 江都市| 筠连县| 双城市| 桃源县| 朝阳县| 新蔡县| 水城县| 建水县| 开阳县| 卓尼县| 乌鲁木齐市|