これは誤解です。UNIQUE
制約は正確に あなたが欲しいもの。複数のNULL
値は、UNIQUE
で定義された列に共存できます 。
マニュアル:
一般に、制約に含まれるすべての列の値が等しいテーブルに複数の行がある場合、一意性制約に違反します。ただし、この比較では、2つのヌル値は等しいとは見なされません。つまり、一意の制約が存在する場合でも、null値を含む重複行を格納することが可能です 制約された列の少なくとも1つ。この動作はSQL標準に準拠していますが、他のSQLデータベースがこの規則に従わない可能性があると聞いています。したがって、ポータブルを目的としたアプリケーションを開発する場合は注意が必要です。
大胆な強調鉱山。
文字タイプでは空の文字列(''
)を使用できることに注意してください )、これはではありません NULL
値であり、複数の行に入力された場合、他のnull以外の値と同じように一意の違反をトリガーします。