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

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

          最開始使用的是三條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)  編輯  收藏

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


          網站導航:
           
           
          主站蜘蛛池模板: 青岛市| 松溪县| 江津市| 全南县| 许昌县| 吉木萨尔县| 雷州市| 忻州市| 贵定县| 余姚市| 霞浦县| 宜黄县| 广东省| 湟中县| 资中县| 渭南市| 九龙县| 元阳县| 铅山县| 吉安县| 平遥县| 芮城县| 赤水市| 溧水县| 通化市| 原平市| 衡东县| 邢台县| 红原县| 马边| 仲巴县| 灵宝市| 曲松县| 黑龙江省| 麟游县| 青岛市| 遂溪县| 剑阁县| 聂拉木县| 保德县| 满洲里市|