关闭

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

发表于:2014-4-11 10:42

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:coney_12    来源:51Testing软件测试网采编

  想往表中插入一条数据,如果表中没有该条数据才插入,如果已经存在该条数据就不插入。
  该怎么处理?
  一个比较笨的办法,是先用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'的数据,就不会插入,如果没有就会插入一条新数据。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号