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

标签 sql 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 确实支持“生成的列”: http://db.apache.org/derby/docs/10.14/ref/rrefsqljgenerationclause.html

因此,也许您可​​以更改表定义以包含GENERATED AS(表达式) 列,其中包含计算数据所需的表达式。

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

关于sql - 在 Derby 中为 CASE 表达式创建索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47931052/

相关文章:

sql - 将数字字段解释为 SQL 中的字符串

SQL COUNT* GROUP BY 大于,

MySql,计算多个组并创建 View

java - 如何仅检索关联的 ID 而不是实体?

sql - Select 语句在表之间进行左连接,同时根据右表中的特定值过滤结果?

sql - 如何选择具有最大时间戳和结果的 test_id 上不同的行

postgresql - JavaDB - Derby 中 PostgreSQL 'localtimestamp' 的等效项是什么?

java - 使用列索引而不是列名称插入 SQL Derby

database - 如何在 Dropwizard 项目(Angular 7 前端)中创建并开始使用嵌入式 Apache Derby 数据库

hibernate - 无法使用 hibernate 连接到 glassfish 中的嵌入式 derby 数据库