在 Derby 中为 CASE 表达式创建索引

Create index on CASE expression in Derby

我' m 尝试在 CASE 表达式上创建索引,如下所示:

CREATE UNIQUE INDEX symbol_unique_idx ON "USER" (CASE WHEN deleted = 0 THEN symbol ELSE NULL END);

出现错误:

Error: Syntax error: Encountered "CASE" at line 1, column 54.
SQLState:  42X01
ErrorCode: 30000

我做错了什么?

Derby 不支持 CREATE INDEX.

的语法

这是 CREATE INDEX 的 Derby 文档:http://db.apache.org/derby/docs/10.14/ref/rrefsqlj20937.html

Derby 支持 "generated columns":http://db.apache.org/derby/docs/10.14/ref/rrefsqljgenerationclause.html

因此,也许您可​​以更改 table 定义以包含 GENERATED AS (expression) 列,并使用所需的表达式来计算您的数据。

然后您可以将该列包含在索引中。