MySQL では unique key が NULL を無視する
MySQL では unique key を指定していても NULL があると無視されるようだ。
たとえば次のテーブルでは、name と deleted_at の組に unique key を指定している。
create table test1( id integer primary key auto_increment, name varchar(100) not null, deleted_at datetime, unique key (name, deleted_at) );
なのに、同じ値の組み合わせを入れてもエラーにならない。
mysql> insert into test1 values(null, 'aaa', null); mysql> insert into test1 values(null, 'aaa', null); mysql> insert into test1 values(null, 'aaa', null); mysql> select * from test1; +----+------+------------+ | id | name | deleted_at | +----+------+------------+ | 1 | aaa | NULL | | 2 | aaa | NULL | | 3 | aaa | NULL | +----+------+------------+
まじっすかー。勘弁してくださいよ MySQL さん。unique key の意味ないじゃん。
#これって標準的なSQLの仕様なんかな。