Blogger Scott

          數據庫表中插入重復數據的處理

          想往表中插入一條數據,如果表中沒有該條數據才插入,如果已經存在該條數據就不插入。
          該怎么處理?

          一個比較笨的辦法,是先用select查找表中是否已經存在該數據,然后再根據返回的結果決定是否insert。這樣做一來效率會降低,二來,如果在select和insert執行期間,又有其他用戶進行了insert操作,插入了一條相同的數據,仍然會出錯。

          正確的解決方法是:
          首先,在創建表時,將不需要重復的字段設置為unique,然后在插入時,使用insert ignore語句。

          例如:(數據庫用的是mysql5)
          創建一張表用來存儲用戶:
          create table user_info
          (
             uid mediumint(10) unsigned NOT NULL auto_increment primary key,
             last_name char(20) not null,
             first_name char(20) not null,
             unique ( last_name, first_name)
          );

          插入數據:
          insert ignore into user_info (last_name,first_name) values ('x','y');
          //這樣一來,如果表中已經存在last_name='x'且first_name='y'的數據,就不會插入,如果沒有就會插入一條新數據。





          posted on 2008-08-17 16:16 江天部落格 閱讀(4816) 評論(3)  編輯  收藏 所屬分類: 數據庫

          Feedback

          # re: 數據庫表中插入重復數據的處理 2008-08-17 17:58 dell筆記本

          我一直是采用的笨辦法.  回復  更多評論   

          # re: 數據庫表中插入重復數據的處理 2008-08-18 22:41 kelch

          我還以為博主有什么其他的高招呢
          繼續加油啊  回復  更多評論   

          # re: 數據庫表中插入重復數據的處理 2008-08-26 07:12 舞命小丟

          這個方法,適用于所有數據庫嗎?  回復  更多評論   

          主站蜘蛛池模板: 镇坪县| 根河市| 云阳县| 唐河县| 永年县| 突泉县| 万全县| 双牌县| 东辽县| 美姑县| 虞城县| 北海市| 桦甸市| 自贡市| 呼和浩特市| 秦皇岛市| 淅川县| 修武县| 成都市| 西乡县| 平昌县| 玛纳斯县| 阿坝| 信丰县| 陈巴尔虎旗| 阳谷县| 汝南县| 赣榆县| 隆化县| 深水埗区| 宣化县| 元江| 招远市| 通辽市| 万山特区| 洮南市| 彭泽县| 东丽区| 乌兰察布市| 肇庆市| 平遥县|