php - mysql不使用索引如何做到不插入重复的数据?
PHP中文网
PHP中文网 2017-05-16 12:58:10
0
2
567

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

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

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

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

2,3
1,4
1,3

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

PHP中文网
PHP中文网

认证高级PHP讲师

全員に返信(2)
伊谢尔伦

この問題は、楽観的ロックを使用する方が簡単に解決できます。手順は次のとおりです:
1. (1, 3) タプルの md5 ハッシュ キー (hashedKey) を Redis に作成し、最初のクエリに対応するレコードを配置します。 redis;
2. レコードを挿入するときは、まず新しい (1,3) タプルの md5 ハッシュ キーを redis (楽観的ロック メカニズム) に挿入します。これは、キーが既に存在することを証明し、挿入操作を実行します。 ;
3. ハッシュ アルゴリズムの例は次のとおりです。 リーリー

=== 質問を詳しく見てみると、MySQL を使用して解決する必要があるようです ===

インデックスを使用しない場合、特に良いアイデアはありませんが、インデックスを構築できれば、 a->b をインデックス テーブルのフィールドとして作成できます。インデックス タイプは次のとおりです。これにより、繰り返し挿入される問題も解決できます。

いいねを押す +0
为情所困

一意制約を使用する目的は、データベース層で重複データを制限することです。

この制限を放棄したい場合は、プログラミングを通じてのみ回避できます。

最も直接的な解決策は、データを挿入する前に、まずデータを検索して、一意性を考慮する必要があるフィールドが更新される値を持つフィールドが既に存在するかどうかを判断し、存在する場合は更新を中止し、そうでない場合は更新を実行します。しかし、それでも、繰り返しのデータ入力を避けることはできません。結局のところ、データの繰り返し入力の可能性が大幅に減少するとしか言えません。

一意の制約を使用できる場合は、一意の制約を保証するように努めることをお勧めします。結局のところ、これはシステムの最後の保証層です。
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!