php - mysql不使用索引如何做到不插入重复的数据?

查看:110
本文介绍了php - mysql不使用索引如何做到不插入重复的数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

表中有两个字段,分别是a,b。

例如记录如下
1,2
1,3
2,3
1,3

说明:
1.其中1,3才是重复的数据。
2.表里面是允许重复数据存在。

问题:当用户选择重复的数据不添加入库,这时如果用户添加的数据如下。

2,3
1,4
1,3

只能让1,4插入,其余都不可以,怎么实现这个需求?麻烦了

解决方案

这个问题比较好解决哈,使用乐观锁吧,步骤如下:
1.创建(1,3)元组的的md5 hash key(hashedKey)到redis里面,第一次查询时把对应的记录放到redis里面去;
2.插入记录时,先插入新的(1,3)元组的md5 hash key到redis里面(乐观锁机制),如果不能插入,证明已经存在此key,拒绝进行此插入操作;
3.hash算法例子如下:

function goHashed($a,$b,&$hashedKey)
{
   //注意对a,b数据格式的判断和异常考虑
   const SALT = "Hello,world"
   $hashedKey = md5($a.SALT.$b.SALT)
}

===好好看了一下题主的问题,貌似还必须得用MySQL的方式解决===

如果不使用索引,本人还真没什么好办法,不过要是可以建索引的话,可以让a->b组成一个索引表的一个字段,索引类型为unique index,这样也能解决重复插入的问题。

这篇关于php - mysql不使用索引如何做到不插入重复的数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆