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 江天部落格 閱讀(4809) 評論(3)  編輯  收藏 所屬分類: 數據庫

          Feedback

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

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

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

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

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

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

          主站蜘蛛池模板: 浏阳市| 理塘县| 平利县| 旬阳县| 遵义市| 霍州市| 眉山市| 沿河| 湖口县| 曲靖市| 沙雅县| 长沙市| 辛集市| 昆山市| 平度市| 漳平市| 平远县| 广安市| 仁化县| 广丰县| 建瓯市| 繁峙县| 二手房| 民勤县| 大石桥市| 库伦旗| 教育| 襄樊市| 大同市| 中西区| 壤塘县| 怀仁县| 丰都县| 连云港市| 司法| 巴彦县| 广宁县| 昌宁县| 沙田区| 南和县| 张北县|