テーブルには a と b という 2 つのフィールドがあります。
たとえば、レコードは次のとおりです:
1, 2
1, 3
2, 3
1, 3
説明:
1. このうち、1と3は繰り返しデータです。
2. テーブル内に重複データが存在することが許可されます。
問題: ユーザーがデータベースに追加しない重複データを選択した場合、ユーザーが追加したデータは次のとおりです。
2、3
1、4
1、3
1 と 4 のみを挿入できますが、残りは挿入できません。この要件を達成するにはどうすればよいですか?ごめんなさい
この問題は、楽観的ロックを使用する方が簡単に解決できます。手順は次のとおりです:
=== 質問を詳しく見てみると、MySQL を使用して解決する必要があるようです ===1. (1, 3) タプルの md5 ハッシュ キー (hashedKey) を Redis に作成し、最初のクエリに対応するレコードを配置します。 redis;
2. レコードを挿入するときは、まず新しい (1,3) タプルの md5 ハッシュ キーを redis (楽観的ロック メカニズム) に挿入します。これは、キーが既に存在することを証明し、挿入操作を実行します。 ;
3. ハッシュ アルゴリズムの例は次のとおりです。 リーリー
一意制約を使用する目的は、データベース層で重複データを制限することです。
この制限を放棄したい場合は、プログラミングを通じてのみ回避できます。
最も直接的な解決策は、データを挿入する前に、まずデータを検索して、一意性を考慮する必要があるフィールドが更新される値を持つフィールドが既に存在するかどうかを判断し、存在する場合は更新を中止し、そうでない場合は更新を実行します。しかし、それでも、繰り返しのデータ入力を避けることはできません。結局のところ、データの繰り返し入力の可能性が大幅に減少するとしか言えません。
一意の制約を使用できる場合は、一意の制約を保証するように努めることをお勧めします。結局のところ、これはシステムの最後の保証層です。