複製エントリを許可しないためのユニークなキーを修正する方法

StackOverflow https://stackoverflow.com/questions/2422592

  •  19-09-2019
  •  | 
  •  

質問

私の問題は次のとおりです。キー「IDX_SR_U_IDENTITY_FINGERPRINTPROFILE」は、フィールド「C_R_FINGERSPRINT」と「C_R_Profile」を一意に制限することを目的としています。

テーブル内の4つのエントリすべてがこれらの2つのフィールドで同じ値を持っているため、私は何か間違ったことをしたようです。 2つのレコードが同じ指紋または同じプロファイルを持っているが、両方ではない場合は大丈夫です。

このユニークなキーを正しく指定して、そのような複製が許可されないようにするにはどうすればよいですか?

alt text
(ソース: rigel222.com)

役に立ちましたか?

解決

私はあなたのキーが正しいと思いますが、mysqlはそれを適用しません NULL 値。 作成テーブルを作成するためのMySQLドキュメント 州:

一意のインデックスは、nullを含む可能性のある列の複数のnull値を可能にします。

(1,2)のようなエントリは一度だけ発生する可能性がありますが、(1、null)のようなエントリは数回発生する可能性がありますが、それらは重複しているとは見なされません。 NULL.

ユースケースに応じて、禁止することができます NULL 2つの列が問題を回避します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top