您的位置:首页 > 数据库

数据库表中插入重复数据的处理

2010-07-08 19:45 295 查看
想往表中插入一条数据,如果表中没有该条数据才插入,如果已经存在该条数据就不插入。
该怎么处理?

一个比较笨的办法,是先用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'的数据,就不会插入,如果没有就会插入一条新数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: