php - mysql不使用索引如何做到不插入重复的数据?
本文介绍了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屋!
查看全文