博主信息
博文 1
粉丝 0
评论 0
访问量 245
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
insert时,如何避免重复注册?
P粉417955368
原创
245人浏览过

今天遇到一个问题:通过sql语句直接实现重复数据不插入,而不用借助逻辑代码进行判断。

通过查询目前有三种方法可以实现。

一、insert ignore into

前提条件:插入的属性列中包含主键或者唯一索引。

用法:和insert into用法一致,插入时需要指定属性列,否则默认全部属性列值。当根据主键或唯一索引判定重复时,直接忽略该条数据,执行下一条。

例子: 给表设置了主键和唯一索引(id:主键, serial: 设置了唯一索引)

代码解读复制代码主键重复

因为ID为6的数据已存在,所以受影响行数为0,也就意味着不插入。

代码解读复制代码唯一索引重复

插入了两天serial一样的数据信息,可以看到受影响行数为1,也就是说在在插入第二条数据的时候重复直接忽视。

二、replace into

前提条件:插入的属性列中包含主键或者唯一索引。

用法:和insert into用法一致,插入时需要指定属性列,否则默认全部属性列值。当表中存在重复数据,则先删除此行数据,然后插入新的数据,相当于 delete + insert

例子:

主键重复

replace into sensor_core(id, range_type, type, serial, name, model) VALUES(10, "LLP","芯体12","40110992","陶瓷压力传感器芯体","CPS1184-5bar")

ID重复,修改了type属性列的数据,执行之后再次查看数据库中的数据,发现数据已变更。

唯一索引重复

replace into sensor_core(id, range_type, type, serial, name, model) VALUES(10, "LLP","芯体","40110992","陶瓷压力传感器芯体","CPS1184-5bar")

ID不同,serial相同,执行sql之后,再次查看数据库中的数据,发现ID已变更。

三、insert into ... on duplicate key update...

前提条件:插入的属性列中包含主键或者唯一索引。

用法:该数据库可以以on duplicate key为界限,分为两部分来看。当数据重复时,执行后面的update部分,当数据不存在时,执行insert.

本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学