разве вы не знаете, как создать первичный ключ в 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 в создать заявление.
В качестве примера:
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`)
)