1. ホーム
  2. mysql

[解決済み] MySQL は一意性制約の NULL 値を無視しますか?

2022-03-14 02:26:03

質問

一意であることを望むEメールカラムがあります。しかし、NULL値も受け入れるようにしたいのです。私のデータベースは、この方法で2つのNULLメールを持つことができますか?

解決方法を教えてください。

はい、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 値しか許可されません。