Используя InnoDB/MySQLi, у меня есть простая таблица: mytable
. Таблица имеет четыре поля: id
(primary, auto_inc), field1
, field2
, field3
. Все они BIGINT
и, кроме id
, могут быть NULL
.
Я добавил уникальное ограничение:
ALTER TABLE mytable ADD UNIQUE INDEX(field1,field2,field3);
Однако я вполне могу добавить следующие строки без генерации ошибки. Я хотел бы, чтобы это создало ошибку "duplicate", но это не так:
INSERT INTO mytable VALUES (NULL,3,NULL)
INSERT INTO mytable VALUES (NULL,3,NULL)
Он генерирует только "повторяющуюся" ошибку, если все поля имеют значения, отличные от NULL, например,
INSERT INTO mytable VALUES (2,3,4)
INSERT INTO mytable VALUES (2,3,4)
Как я могу сказать MySQL генерировать ошибки "duplicate", даже если у одного (или более) полей есть значения NULL
?
EDIT: Это ранее было добавлено как "ошибка" для MySQL: http://bugs.mysql.com/bug.php?id=25544