数据库表中插入重复数据的处理
2014-04-10 10:34
148 查看
想往表中插入一条数据,如果表中没有该条数据才插入,如果已经存在该条数据就不插入。
该怎么处理?
一个比较笨的办法,是先用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'的数据,就不会插入,如果没有就会插入一条新数据。
该怎么处理?
一个比较笨的办法,是先用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'的数据,就不会插入,如果没有就会插入一条新数据。
相关文章推荐
- 数据库表中插入重复数据的处理
- 数据库表中插入重复数据的处理
- 数据库并发插入避免重复数据的问题
- postgresql数据库中对重复数据的处理
- 根据从redis缓存的数据查询出来,在从数据库中取出所有的数据,俩个数据进行比较,去掉重复,剩下库中新插入的数据,取出新数据,然后把redis中的缓存数据清空把从数据库中查出来的所有数据放到redis缓存中
- 关于数据库层面上锁,解决程序并发插入多条重复数据
- JFinal中java如何处理数据库查询出的重复数据
- sqlite 数据库 对 BOOL型 数据的插入处理
- 使用ibatis向数据库中插入数据时的主键处理
- 定时从一个数据库表中的数据存储到另外一个数据库中的表,而且怎么处理重复的数据?
- oracle处理重复插入数据
- C#关于向数据库中插入数据时,有不规则自增列的处理方法
- 关于数据库层面上锁,解决程序并发插入多条重复数据
- 并发下,使用redis防止数据重复插入(数据库未对表字段设置唯一情况下)
- 数据库的连接以及处理重复数据
- 数据库重复写入数据问题处理
- mysql 插入数据 重复行处理
- C# 多线程并发处理数据库数据,发送信号等待处理完统一插入
- 数据库处理表中重复数据方法
- JSP get 请求 Tomcat 服务器 插入数据到数据库中文乱码处理