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 江天部落格 阅读(4633) 评论(3)  编辑  收藏 所属分类: 数据库

Feedback

# re: 数据库表中插入重复数据的处理 2008-08-17 17:58 dell笔记本

我一直是采用的笨办法.  回复  更多评论   

# re: 数据库表中插入重复数据的处理 2008-08-18 22:41 kelch

我还以为博主有什么其他的高招呢
继续加油啊  回复  更多评论   

# re: 数据库表中插入重复数据的处理 2008-08-26 07:12 舞命小丢

这个方法,适用于所有数据库吗?  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: