我' 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 确实支持“生成的列”: http://db.apache.org/derby/docs/10.14/ref/rrefsqljgenerationclause.html
因此,也许您可以更改表定义以包含GENERATED AS(表达式)
列,其中包含计算数据所需的表达式。
然后您可以将该列包含在索引中。
关于sql - 在 Derby 中为 CASE 表达式创建索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47931052/