ユニークにしたいメール列があります。しかし、null 値を受け入れることも必要です。私のデータベースはそのように2つのヌルメールを持つことができますか?
5 に答える
はい、MySQL では、一意の制約を持つ列で複数の NULL を使用できます。
CREATE TABLE table1 (x INT NULL UNIQUE);
INSERT table1 VALUES (1);
INSERT table1 VALUES (1); -- Duplicate entry '1' for key 'x'
INSERT table1 VALUES (NULL);
INSERT table1 VALUES (NULL);
SELECT * FROM table1;
結果:
x
NULL
NULL
1
これは、すべてのデータベースに当てはまるわけではありません。たとえば、SQL Server 2005 以前では、一意の制約を持つ列で単一の NULL 値のみが許可されます。
著者が元々、これが値の重複を許可するかどうかを尋ねていたのか、それとも「NULL
使用中に値の重複を許可するにはどうすればよいUNIQUE
ですか?」という暗黙の質問があったのかどうかはわかりません。または「値を 1 つだけ許可する方法はUNIQUE
NULL
?」
質問はすでに回答されています。はい、インデックスNULL
の使用中に値が重複する可能性があります。UNIQUE
UNIQUE
NULL
「1つの値を許可する方法」を検索しているときに、この答えに出くわしたので。同じことをしているときにこの質問に出くわす可能性のある他の人にとって、私の答えの残りはあなたのためです...
MySQL ではUNIQUE
NULL
値を 1 つ持つことはできませんがUNIQUE
、空の文字列の値を挿入することで空の値を 1 つ持つことができます。
警告: 数値および文字列以外の型は、デフォルトで 0 または別のデフォルト値になる場合があります。
null 許容の一意の制約は避けてください。いつでも列を新しいテーブルに配置し、null 以外で一意にしてから、値がある場合にのみそのテーブルにデータを入力できます。これにより、列に対するキーの依存関係が正しく実施され、NULL が原因で発生する可能性のある問題が回避されます。