【问题标题】:JOOQ - How to create primary keyJOOQ - 如何创建主键
【发布时间】:2018-08-19 15:19:29
【问题描述】:

你不知道如何在 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() 有可能吗?因为我只需要它作为字符串,所以我想再次使用 getSQL() 命令...

我发现了这样的东西:DSL.primaryKey("id");

但我无法将它与休息联系起来。这意味着当我调用 getSQL() 时它不存在,我可以在方法结束时将其系统化,但它不会在 rest CREATE sql 中......我希望你明白我想说的话。

感谢您的帮助。

【问题讨论】:

    标签: java jooq


    【解决方案1】:

    您可以使用 jooq 将约束添加到 create statement

    例如:

    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`)
    )
    

    【讨论】:

      猜你喜欢
      • 2015-03-29
      • 2021-07-22
      • 2011-04-14
      • 2016-12-05
      • 1970-01-01
      • 1970-01-01
      • 2019-05-17
      • 2017-08-05
      • 1970-01-01
      相关资源
      最近更新 更多