JOOQ支持使用varchar_pattern_ops选项创建PostgreSQL索引吗?

问题描述 投票:0回答:1

我想使用在 Java 中运行的迁移器升级我的 PostgreSQL 数据库架构,并且我正在使用 JOOQ 为我的项目生成 Java 文件。目前,要升级我的数据库模式,我必须删除旧索引并将其替换为显式 SQL 查询,包括 varchar_pattern_ops aka

String sqlQuery = String.format("CREATE INDEX %s ON %s (%s varchar_pattern_ops);", indexName, tableName, columnName);
PreparedStatement createIndexStatement = conn.prepareStatement(sqlQuery);
createIndexStatement.execute();

有没有办法避免这种方法并使用 JOOQ 开箱即用的类?

java postgresql jooq
1个回答
0
投票

jOOQ 永远不会支持其 DSL API 中开箱即用的所有数千个供应商特定存储子句,但使用 plain SQL templates 作为解决方法总是相对容易,因此您当然不必回退到使用 JDBC:

ctx.execute("create index {0} on {1} ({2} varchar_pattern_ops)",
    name(indexName),
    name(tableName),
    name(columnName)
);

甚至:

ctx.createIndex(indexName)
   .on(table(name(tableName)), field("{0} varchar_pattern_ops", name(fieldName)))
   .execute();

记住在运行 SQL 时切勿连接字符串,以避免 SQL 注入和语法错误。出于这个原因,我的示例在普通 SQL 模板中使用了带引号的标识符

© www.soinside.com 2019 - 2024. All rights reserved.