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() 时它不存在,我可以在方法结束时将它系统化,但它不会在 rest CREATE sql 内部......我希望你明白我想说的话。
谢谢你的帮助。
解决方案
您可以使用 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`)
)
推荐阅读
- reactjs - 下一个 JS 引导
- ios - 如何将描述上的标签高度添加到卡片高度?
- css - Elementor - 垂直导航菜单 - 子菜单对齐
- java - 从联结表和关联表中删除的 SQL 查询
- curl - 我想用 nexmo cURL 发送多条短信
- python - Google BigQuery:带有目标表的 SELECT 将字段模式覆盖为 NULLABLE
- php - 我想在我的数据库中添加一个颜色值,用于显示可用性
- django - django transaction.non_atomic 在管理脚本中有效吗?
- python - odoo 12. 附加文件
- android - 如何使用 React Native Share API 共享 App 链接?