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

JOOQ-如何创建主键

蒲曦
2023-03-14

你不知道如何在JOOQ(Java)中创建主键吗?我需要的只是得到正确的创建表字符串。我还没有这段代码(使用SQLDialect。MYSQL):

public void createTable(String tableName, Map<String, DataType> columns){
        this.tableName = tableName;
        table = ctx.createTable(tableName).column("id", INTEGER.identity(true));

        System.out.println(table.getSQL() + ";");
}

输出(来自字符串生成器):

create table `filetest`(`id` int not null auto_increment);

我需要的是设置主键以获得正确的输出:

create table `filetest`(`id` int not null auto_increment, primary key ('id'));

不使用execute()是否可能?因为我只需要它作为字符串,所以我想再次使用only getSQL()命令。。。

我发现了类似这样的东西:DSL。主密钥(“id”);

但我无法将它与rest联系起来。这意味着,当我调用getSQL()时,它不在那里,我可以在方法的末尾对它进行系统化处理,但它不会在RESTCREATESQL中。。。我希望你能理解我想说的话。

谢谢你的帮助。

共有1个答案

南宫勇军
2023-03-14

可以使用jooq向create语句添加约束。

例如:

DSLContext ctx;

String createTableSql = ctx.createTable("TABLE_NAME")
        .column("TABLE_ID", SQLDataType.BIGINT.identity(true))
        .column("COL_1", SQLDataType.VARCHAR(64).nullable(false))
        .constraints(
            DSL.constraint("PK_TABLE").primaryKey("TABLE_ID"),
            DSL.constraint("UNIQUE_COL_1").unique("COL_1")
        ).getSQL();

System.out.println(createTableSql);

会创建以下语句:

create table `TABLE_NAME`(
    `TABLE_ID` bigint not null auto_increment, 
    `COL_1` varchar(64) not null, 
    constraint `PK_TABLE` primary key (`TABLE_ID`), 
    constraint `UNIQUE_COL_1` unique (`COL_1`)
)
 类似资料:
  • jOOQ具有文档中所述的CREATE TABLE语法: 我想知道如何定义哪个列属于主键?那么,在jOOQ中有没有办法用主键信息创建create TABLE语句呢? 我对SQLite的解决方案特别感兴趣,它没有语法来添加主键,所以我认为在最坏的情况下,我必须去一个特定于数据库的解决方案?

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

  • 问题内容: 我是Java技术的新手。我知道在Java中只有两种创建方式 扩展线程类 实施可运行接口 因此,这只是两种创建方法。但是,当我们使用主JVM启动程序时,它启动了一个main 。我认为甚至JVM也必须遵循创建主要方法的规则,以创建主线程JVM必须扩展Thread类或实现。 我尽了最大的努力,但是不知道JVM是如何创建这个主要对象的。当我完全遍历主类()时,我知道这是负责主线程的类。但是在G

  • JOOQ手册规定如下: jOOQ提供的所有发布服务器都将阻塞底层的JDBC连接,但是如果您为jOOQ提供io.R2DBC.spi.connection或io.R2DBC.spi.ConnectionFactory,那么发布服务器将在R2DBC驱动程序上以非阻塞的方式执行查询。 如何使用io.r2dbc.spi.Connection或io.r2dbc.spi.ConnectionFactory提供D

  • 问题内容: 我想用Pandas的to_sql函数创建一个具有主键的MySQL表(在mysql表中具有主键通常是一种好习惯),如下所示: 但这会创建一个没有任何主键(甚至没有任何索引)的表。 该文档提到了参数“ index_label”,该参数与“ index”参数结合可用于创建索引,但未提及主键的任何选项。 文献资料 问题答案: 免责声明:这个答案是实验性的,而不是实用的,但也许值得一提。 我发现

  • 问题内容: 这是我正在使用的密集设置的过度简化。并且都具有自动增量代理主键作为ID。是包含有关和的信息的表。 我试图决定,如果我应该做的主键的复合ID的距离和。如果我要这样做,哪一个最有意义? (在此示例中,我将ID 11209与ID 437组合在一起) 11209437 (我可以想象为什么这很糟糕) 11209-437 11209.437 或者是其他东西? 将其用作MYSQL MYISAM DB