mysql修改数据 -- 主键冲突
mysql 插入数据唯一键冲突
前提: 修改数据三种可用的方法解决主键冲突的问题
1. insert into ... on duplicate key update set ...
2. update ... set = case key when ... then ... when ... then ... else end where ...;
3. replace into ... (与1相似,但若主键冲突会先删除原数据,后再插入新数据 ,所以运用时最好带上主键)
例:
table : dev_wlcolor ;
field : primary key(wlcolorid) , union index(wlid , yscode , yscode);
有两条数据:
wlcolorid :108 wlid:367 yscode:A type:2
wlcolorid :114 wlid:367 yscode:B type:2
现在需要批量修改为:
wlcolorid :108 wlid:367 yscode:B type:2
wlcolorid :114 wlid:367 yscode:A type:2
测试过程:
1. sql :insert into dev_wlcolor(`wlcolorid` ,`wlid`,`yscode` `type`) values (114 ,'367' , 'B' , 2) , (108 ,'367', 'A' 2) on duplicate key update `yscode` = values(`yscode`);
测试结果 :因为虽然是批量插入数据,但mysql 数据库 每插入一条数据都会检测数据是否冲突 , 当插入数据 wlcolorid 为 108 时发现数据库中存在该唯一键 ,后mysql 尝试把yscode字段的A改为B ,但发现如果更新yscode字段发现
wlcolorid 为114 这条数据也存在一个唯一键 wlid-yscode-type(367-B-2),所以产生唯一键冲突 ,修改数据失败;
2. sql :update dev_wlcolor set yscode = case wlcolorid when 108 then 'B' when 114 then 'A' else yscode end where wlcolorid in(108 , 114);
测试结果 :同上;
3. sql : replace into dev_wlcolor(`wlcolorid` ,`wlid`,`yscode`, `type`) values (114 ,'367' , 'B' , 2) , (108 ,'367', 'A' 2);
测试结果 : 因为每次有唯一键冲突 , mysql 都会先把数据删除 , 再插入一条新的数据 , 所以修改数据成功
tip: 使用 insert ignore table(...) values(...) 插入数据时可跳过主键(或唯一键)冲突的数据 而继续插入剩下的数据;
mysql修改数据 -- 主键冲突的更多相关文章
- sqoop从hive导入数据到mysql时出现主键冲突
今天在将一个hive数仓表导出到mysql数据库时出现进度条一直维持在95%一段时间后提示失败的情况,搞了好久才解决.使用的环境是HUE中的Oozie的workflow任何调用sqoop命令,该死的o ...
- mysql主从之主键冲突
收到短信报警,两台数据库都报slave同步失败了,先说明一下环境,架构:lvs+keepalived+amoeba+mysql,主主复制,单台写入, 主1:192.168.0.223(写) 主2:19 ...
- mysql插入报主键冲突,解决方法主键索引重新排序
1.备份表结构 create table table_bak like table_name; 2.备份表数据 insert into table_bak select * from table_na ...
- mysql修改联合主键
参考 https://blog.csdn.net/BockSong/article/details/80933477 alter table TABNAME drop primary key; alt ...
- mysql主从:主键冲突问题
1.检查从库 show slave status \G; Slave_IO_Running: YesSlave_SQL_Running: No 2.出现类似如下的报错: Last_SQL_Error: ...
- MySql中利用insert into select 准备数据uuid主键冲突
MYSQL 中表1需要准备大量数据,内容主要取自表2,id必须为32位uuid (项目所有表都是这样,没办法), 准备这样插入: INSERT INTO TBL_ONE (ID, SOID, SNAM ...
- sqlite里执行查询提示未启用约束、主键冲突之——数据竟能超字段长度存储
数据表设计如图:szflbm为主键 数据表主键数据: 以上数据在查询时,执行到该语句adapter.Fill(table); 提示主键冲突. 解决: 1.尝试修改数据,把ZC1改成ZZ,正常.说明原因 ...
- mysql 主从,主主,主主复制时的主键冲突解决
原理:slave 的i/o thread ,不断的去master抓取 bin_log, 写入到本地relay_log 然后sql thread不断的更新slave的数据 把主服务器所有的数据复制给从服 ...
- MySQL Last_SQL_Errno: 1062----经典错误,主键冲突
一.基础信息 1. Centos7.4 2.MySQL 5.7.21 3.基于gtid的复制 二.异常描述 误把从节点当成主节点插入一条数据,同一条数据在主.从节点插入都进行了一次插入操作,导致主键冲 ...
随机推荐
- PHP目前常见的五大运行模式
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/xujingzhong0077/artic ...
- PAT 1008 Elevator 数学
The highest building in our city has only one elevator. A request list is made up with N positive nu ...
- ASP.NET Core 2.2 WebApi 系列【四】集成Swagger
Swagger 是一款自动生成在线接口文档+功能测试功能软件 一.安装程序包 通过管理 NuGet 程序包安装,搜索Swashbuckle.AspNetCore 二.配置 Swagger 将 Swag ...
- Linux-用户/分组相关以及处理密码遗忘
一.用户创建 1.简单创建 useradd 用户名 2.指定目录创建用户 useradd -d 目录路径 用户名 //注意这一类的目录路径必须写当前所在文件夹的相对路径而不能直接写目录名称 3.指定用 ...
- CAD编辑器哪个好用?如何使用CAD编辑器
说起CAD图纸很多的朋友都很熟悉,因为CAD图纸在很多领域都有广泛的应用.那CAD图纸都是使用CAD编辑器制图软件来进行绘制的,图纸的格式都是为dxf格式或者是dwg格式的.对于才接触CAD的伙伴们来 ...
- JS基础语法---函数的其他定义方式
函数的其他定义方式 函数声明 函数表达式:把一个函数给一个变量,此时形成了函数表达式 函数调用 函数的自调用 命名函数:函数如果有名字,就是命名函数 匿名函数:函数如果没有名字,就是匿名函数 ...
- 获取格式字符串第idx个值及实例
--根据索引idx值获取格式串中第idx个值 如数据'11,12,13,14,15,16' 方法:格式串+分隔符:@str='11,12,13,14,15,16'+',' select dbo.Get ...
- docker实用命令
退出容器又不关闭容器:Ctrl + P + Q 比如这种情况: 直接输入exit 会退出且关闭容器,工程就stop了 或者Ctrl + C,会报错KeyboardInterrupt,工程就也stop了 ...
- 监控redis命令 - monitor
有时候我们需要知道客户端对redis服务端做了哪些命令操作.我们可以试用monitor命令来查看.它能清楚的看到客户端在什么时间点执行了那些命令. MONITOR 是一个调试命令,每个命令流回来的re ...
- 向busybox中添加自己的applet
关键词:buysbox.applet等. busybox常用于嵌入式环境,集成中断Linux命令和工具.这些工具简单高效. 下面从如下方面了解: 这些命令是一个软链接到busybox,那么是如何从软连 ...