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 舞命小丟

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

          主站蜘蛛池模板: 安远县| 仪征市| 雅安市| 合肥市| 翼城县| 丹凤县| 邢台市| 进贤县| 淮滨县| 崇左市| 托克逊县| 上饶市| 云和县| 清徐县| 昌黎县| 宁晋县| 临洮县| 浠水县| 德清县| 中西区| 崇信县| 什邡市| 泌阳县| 黑龙江省| 太白县| 宁津县| 金昌市| 武川县| 阜宁县| 资中县| 长子县| 许昌县| 旬邑县| 房产| 凉城县| 德安县| 绍兴市| 安庆市| 寿宁县| 永安市| 温州市|