java - JOOQ 用索引创建表

标签 java sql jooq

根据文档,为了使用 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();

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

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

最佳答案

jOOQ 3.15 还不支持这种特殊的语法: https://github.com/jOOQ/jOOQ/issues/9243

您可以通过多种方式自行实现,例如:

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

  • 创建表
  • 创建索引

关于java - JOOQ 用索引创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70072756/

相关文章:

java - 绕过 Jooq 乐观锁定和 DefaultRecordListener 的某些方法

java - Guava Cache - 按身份比较值的含义是什么

java - Akka - 受监督 Actor 的重启

sql - 在 Postgres Psycopg2 SQL 查询中输入未指定数量的变量

mysql - 计算单行中单词的出现次数

sql - 关系数据库中的行程时间计算?

java - 构建最可靠的用户国机制

java - 当连续按下 `System.in` 键两次时如何终止 "Enter"键盘流?

java - 当从 Postgresql 表生成代码时,jOOQ 忽略列名大小写

java - Jooq中的一对多选择