JOOQ-如何创建主键

时间:2018-08-18 13:50:59

标签: java jooq

您不知道如何在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()时,它不在那儿,我可以在方法末尾将其系统化,但是它不会在其余的CREATE sql中...我希望您理解我想说的话。 >

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

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

例如:

public function behaviours(){
  $behaviors = parent::behaviors();
    $auth = $behaviors['authenticator'] = [
        'class' => QueryParamAuth::className(),
    ];
    $behaviors['corsFilter'] = [
        'class' => Cors::className(),
        'cors' => [
            'Access-Control-Allow-Credentials' => true,
           'Origin' => ['http://localhost:8090'],

            // Allow only POST and PUT methods
            'Access-Control-Request-Method' => ['POST', 'PUT'],
            // Allow only headers 'X-Wsse'
            'Access-Control-Request-Headers' => ['X-Wsse'],
            // Allow credentials (cookies, authorization headers, etc.) to be exposed to the browser
            'Access-Control-Allow-Credentials' => true,
            // Allow OPTIONS caching
            'Access-Control-Max-Age' => 3600,
            // Allow the X-Pagination-Current-Page header to be exposed to the browser.
            'Access-Control-Expose-Headers' => ['X-Pagination-Current-Page'],
        ],
    ];


 }

将创建以下语句:

localhost:8080