JOOQ 使用索引创建表

Posted

技术标签:

【中文标题】JOOQ 使用索引创建表【英文标题】:JOOQ Creating table with indices 【发布时间】:2022-01-01 11:11:03 【问题描述】:

按照文档使用 JOOQ 创建表:

context.createTable("table")
      .column("column1", INTEGER)
      .column("column2", VARCHAR(10).nullable(false))
      .constraints(
          primaryKey("column1"),
          unique("column2"),
          foreignKey("column2").references("some_other_table"),
          check(field(name("column2")).like("A%"))
      )
      .execute();

但是,似乎也可以在创建表时声明索引:

context.createTable("table")
      .column("column1", INTEGER)
      .column("column2", VARCHAR(10).nullable(false))
      .constraints(
          primaryKey("column1"),
          unique("column2"),
          foreignKey("column2").references("some_other_table"),
          check(field(name("column2")).like("A%"))
      )
      .indexes(...indices)
      .execute();

我在说明如何操作的文档中找不到任何内容。

以这种方式声明索引的正确方法是什么?

【问题讨论】:

【参考方案1】:

jOOQ 3.15 尚不支持此特定语法: https://github.com/jOOQ/jOOQ/issues/9243

您可以通过各种方式自己实现它,例如:

使用plain SQL templating 使用execute listeners

或者,您可以使用 jOOQ DSL API 运行两个单独的语句:

CREATE TABLE CREATE INDEX

【讨论】:

以上是关于JOOQ 使用索引创建表的主要内容,如果未能解决你的问题,请参考以下文章

使用来自两个不同数据库的两个表使用 JOOQ 构建左连接查询

创建表的时候创建索引

MySQL数据库之索引

SQL Server 使用没有主键的聚集索引创建表

数据库原理实验(openGauss)创建数据库表和索引

JOOQ 强制类型将 BigInteger 转换为 BigDecimal 以用于 POSTGRES