MySQL 数据交换修改前怎么验证重复数据?
用户联系人表 手机号 mobile
字段唯一
现有数据
id | userId | mobile |
---|---|---|
1 | 1 | 18989898989 |
2 | 1 | 18900000000 |
修改用户联系人手机号时,可能的修改方式为交换两个人的手机号然后提交,一次性修改两条数据,把 id 为 1 的联系人手机号改为 18900000000,把 id 为 2 的联系人手机号改为 18989898989
操作由用户控制,可能修改成别的手机号,可能交换手机号
在修改数据前需要判断手机号是否唯一,以便给用户提示,现在想知道怎么达到效果,同一用户可能不止 2 个联系人,解决的方法最好能满足多数据相互交换手机号且验证加提示的效果
查这两条是不是唯一后,再修改提交。
虚拟一个
中间商
:joy:把两个号码查出来,对应数据库条数统计,结果id是不是对应的这两条,是则修改,不是则走其他逻辑。
mysql users table 设置 mobile 为 unique 索引
删掉,重新写入
砍掉这个功能, 完事。😂
你这,想法好像有点问题,为什么这个功能要让程序来实现呢,我们的系统也有这问题,我就告诉他弄个假的手机号去后台修改三次,就交换过来了
(同上面的中间商同学)
"修改用户联系人手机号时,修改方式为交换两个人的手机号然后提交,一次性修改两条数据,把 id 为 1 的联系人手机号改为 18900000000,把 id 为 2 的联系人手机号改为 18989898989" 你这段话已经标明数据已经存在,而且你后续的功能是交换而已,那这个存在的手机号难道不是唯一的?如果已存在的手机号不是唯一的,你后续的修改为什么又要去保证唯一性
你非想代码改,那就设置
unique 允许为null
,要修改的时候把手机号设置为null
,不会触发唯一索引