1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > mysql update主键冲突_mysql主键重复 不报错 只更新的操作

mysql update主键冲突_mysql主键重复 不报错 只更新的操作

时间:2020-11-26 13:44:44

相关推荐

mysql update主键冲突_mysql主键重复 不报错 只更新的操作

项目中对接一个单点登陆的回调api,需要判断用户是否在库,不在库新增用户,在库更新登陆次数,大概代码如下:<?php

$isExist=true;

if($isExist)

{

insert([

'id'=>392223903,

'username'=>'gaojiufeng',

'password'=>'123456',

'login'=>1,//登陆次数

]);

}

else

{

update([

'login'=>'+1'

]);

}

上面的代码在高并发下会出现问题,主键会重复插入报错。于是我们使用MySQL ON DUPLICATE KEY UPDATE语句,不存在直接新增,存在就更新,代码如下:INSERTINTOmember(id,username,PASSWORD,login)

VALUES

(392223903,'gaojiufeng','123456',1)

ONDUPLICATEKEYUPDATElogin=login+1;

其实在thinkphp自带了这种方案,但是使用的REPLACE INTO语句,REPLACE INTO语句发现主键重复会删除原来的数据,再次新增一条。虽然能够达到我的要求,但是我并不想更新全部字段,目前看来ON DUPLICATE KEY UPDATE语句性能更高。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。