Я пытаюсь определить следующую таблицу:
CREATE TABLE IF NOT EXISTS `test` (
`gid` INT NOT NULL,
`x` INT NOT NULL,
`y` INT NOT NULL,
`z` INT NOT NULL,
`type` INT NOT NULL,
...
PRIMARY KEY ( `gid`, `x`, `y`, `z` ),
UNIQUE INDEX `type_index` ( `gid`, ( CASE WHEN `type` = 1 THEN `type` END ) ),
UNIQUE INDEX `tp_index` ( `gid`, ( CASE WHEN `type` = 2 THEN ... END ) ),
);
Я хочу, чтобы таблица допускала только одну запись на gid
, когда type
равно 1, тогда как в ней может быть несколько записей за gid
для любого другого типа . В MySQL этот запрос работает нормально. Однако при использовании MariaDB запрос вообще не работает.
Результат в MariaDB:
В синтаксисе SQL возникла ошибка; проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с '(CASE WHEN type
= 1 THEN type
END)), UNIQUE INDEX tppad
(gid
, (CASE' в строке 1)
Как я могу решить эту ошибку?
Другими словами: что эквивалентно MariaDB этому?
Я использую версию 10.2.20-MariaDB-10.2.20+maria~xenial-log