【发布时间】:2020-05-06 04:34:51
【问题描述】:
我正在尝试定义下表:
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 ) ),
);
当type 为1 时,我希望该表允许每个gid 一个条目,而对于任何其他类型,它可以每个gid 有多个条目。在 MySQL 中,此查询运行良好。但是,使用 MariaDB 查询根本不起作用。
MariaDB 中的结果:
您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以了解在 '( CASE WHEN
type= 1 THENtypeEND ) )、UNIQUE INDEXtppad(gid, ( CASE' 在第 1 行附近使用的正确语法
我该如何解决这个错误?
换句话说:MariaDB 相当于什么?
我正在使用版本10.2.20-MariaDB-10.2.20+maria~xenial-log
【问题讨论】:
-
为什么要在索引定义中使用 case 语句?你的目标是什么?
-
因为每个
gid只允许一个类型为 1 的条目,而允许多个其他类型的条目。