如何使用jOOQ为MySQL/MariaDB添加自增主键列
在MySQL/MariaDB中用jOOQ添加自增主键列的正确方式
MySQL/MariaDB的规则是自增列必须绑定主键或唯一键,你之前分两次执行ALTER TABLE的写法会报错,因为第一次添加自增列时没有任何键约束。不用手动拼接SQL,jOOQ本身支持在同一条ALTER TABLE语句里完成添加列和主键约束的操作,有两种简洁的实现方式:
方式一:合并添加列与主键约束的操作
把addColumn和addConstraint放在同一个alterTable调用里,一次性执行:
ctx.alterTable("my_table") .addColumn("id", SQLDataType.BIGINT.identity(true)) .addConstraint(DSL.primaryKey("id")) .execute();
方式二:在列定义中直接附加主键约束
通过DSL.column定义列时,直接给列绑定主键约束:
ctx.alterTable("my_table") .addColumn(DSL.column( "id", SQLDataType.BIGINT.identity(true) ).constraint(DSL.primaryKey("id"))) .execute();
这两种方式都会生成单条ALTER TABLE语句,既符合MySQL的规则,又保持了jOOQ类型安全的优势,完全不需要手动拼接SQL。
内容的提问来源于stack exchange,提问作者Michal Turcel
相关产品推荐
相关产品推荐

