sql更新语句(mysql里一条SQL语句完成新增或更新)

精英怪
广告

mysql、软件编程、后端开发、软件开发、码农、计算机软件、IT、数据库、DBA

sql更新语句(mysql里一条SQL语句完成新增或更新)

插入更新一条SQL完成

ON DUPLICATE KEY UPDATE

这是学生表为例子,主键是SID

一般插入如果有唯一约束冲突,会异常如下

但业务上遇到冲突数据,想走更新数据,又不想写2个SQL(一个insertSQL ,一个update SQL )可以用 ON DUPLICATE KEY UPDATE 语法去解决具体例子如下

这里的可以根据主键SID,还可以唯一索引去更新如我新创建了一个姓名的唯一约束

多个唯一索引情况

注意第一个唯一索引有效果,后面的就不执行了

问题

on duplicate key update

这么好用的语法有什么毛病了?

当然有,就是会会导致自增的主键跳跃自增

测试效果如下,应该跟执行后影响条数有关系

总结

效率变高了,一条SQL完成2条SQL的事主键值/ UNIQUE KEY 已经在表中存在,才走后面的更新SQL特别适用于多行插入的业务场景,批量执行数据时,往往不想遇到这种唯一冲突异常就终止全流程VALUES()函数在INSERT…UPDATE有意义,其他情况都是返回null当表有多个唯一索引时,注意只有第一个索引会产生效果

MySQL、软件编程、后端开发、软件开发、码农、计算机软件、IT、数据库、DBA

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
评论列表 (暂无评论,167人围观)

还没有评论,来说两句吧...