想往表中插入一条数据,如果表中没有该条数据才插入,如果已经存在该条数据就不插入。
该怎么处理?
一个比较笨的办法,是先用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'的数据,就不会插入,如果没有就会插入一条新数据。