当前位置: 首页 > 知识库问答 >
问题:

使用jOOQ创建主键为的表

葛桐
2023-03-14

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();

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

我对SQLite的解决方案特别感兴趣,它没有语法来添加主键,所以我认为在最坏的情况下,我必须去一个特定于数据库的解决方案?

共有1个答案

江嘉悦
2023-03-14

此功能已为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();

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

create.alterTable(AUTHOR)
      .add(constraint("PK_AUTHOR").primaryKey(AUTHOR.ID))
      .execute();
 类似资料:
  • 你不知道如何在JOOQ(Java)中创建主键吗?我需要的只是得到正确的创建表字符串。我还没有这段代码(使用SQLDialect。MYSQL): 输出(来自字符串生成器): 我需要的是设置主键以获得正确的输出: 不使用execute()是否可能?因为我只需要它作为字符串,所以我想再次使用only getSQL()命令。。。 我发现了类似这样的东西:DSL。主密钥(“id”); 但我无法将它与rest

  • 我正在使用JOOQ(JOOQ中的新手)在spring boot项目中使用Rest API在运行时创建数据库。在其中一种情况下,我需要创建一个具有复合主键的表,该主键可以是多个列的组合。我使用下面的代码创建约束- 我已经有

  • 我试图在Cassandra CLI版本1.1.6中创建一个列族,我不确定如何将主键指定为MovieID。

  • 有时,当函数具有这样的签名时,它可能会变得毛茸茸的: 对于编译器来说,所有UUID都是相同的,因此希望在运行时被数据库捕获。 我喜欢jOOQ在编译时捕获许多问题的方式,我也想解决这个问题。我的目标是让每个表的每个键都有自己的类,并让这些字段正确生成pojos。 实现这一目标的最佳方法是什么?我想出了以下几点: 全面的JavaGenerator实现 具有大量强制类型映射的转换器,以及手动创建的键类

  • 问题内容: 我已经使用下面给出的建议更新了代码,该建议已经过测试并且效果很好,可以为将来的用户提供快速参考。 我使用下面的代码来创建链接表,而不必为每个用户设置DSN,我如何指定主键,因为系统会询问您是否手动连接: 注意:上面是针对SQL Server VIEW的,对于SQL Server TABLE而言是相同的,但是您不需要该行(如果在服务器上正确设置了主键)。 该代码代替了链接表并手动指定主键

  • 要用jooq创建一张唱片,我说 这将引发一个id为null的约束冲突异常。如果我设置一个id(如 我没有得到异常,但postgres不会自动生成值。 http://www.postgresql.org/docs/current/static/datatype-numeric.html#datatype-serial的postgres文档指出“在INSERT中省略SERIAL列,或者指定DEFAUL