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

时间:2017-12-21 18:51:08

标签: sql apache derby

我' 我试图在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

我做错了什么?

1 个答案:

答案 0 :(得分:0)

Derby不支持CREATE INDEX的语法。

以下是CREATE INDEXhttp://db.apache.org/derby/docs/10.14/ref/rrefsqlj20937.html

的Derby文档

Derby确实支持“生成的列”:http://db.apache.org/derby/docs/10.14/ref/rrefsqljgenerationclause.html

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

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