使用jOOQ创建包含主键的表

Chr*_*ler 6 java sqlite jooq

jOOQ具有文档中所述的 CREATE TABLE语法:

create.createTable(AUTHOR)
      .column(AUTHOR.ID, SQLDataType.INTEGER)
      .column(AUTHOR.FIRST_NAME, SQLDataType.VARCHAR.length(50))
      .column(AUTHOR_LAST_NAME, SQLDataType.VARCHAR.length(50))
      .execute();
Run Code Online (Sandbox Code Playgroud)

我想知道如何定义哪个列属于主键?那么在jOOQ中有没有办法用PRIMARY KEY信息创建一个CREATE TABLE语句?

我对SQLite的解决方案特别感兴趣,后来没有语法来添加主键,所以我认为在最坏的情况下我必须转到特定于DB的解决方案?

Luk*_*der 6

此功能已针对jOOQ 3.8实施:#4050.

create.createTable(AUTHOR)
      .column(AUTHOR.ID, SQLDataType.INTEGER)
      .column(AUTHOR.FIRST_NAME, SQLDataType.VARCHAR.length(50))
      .column(AUTHOR_LAST_NAME, SQLDataType.VARCHAR.length(50))
      .constraints(
           constraint("PK_AUTHOR").primaryKey(AUTHOR.ID)
      )
      .execute();
Run Code Online (Sandbox Code Playgroud)

从jOOQ 3.6(#3338)开始,您还可以ALTER TABLE在创建表后使用该语句添加约束:

create.alterTable(AUTHOR)
      .add(constraint("PK_AUTHOR").primaryKey(AUTHOR.ID))
      .execute();
Run Code Online (Sandbox Code Playgroud)