我想知道是否有办法以不可知的方式在 jOOQ 中为不同的数据库禁用数据库约束。例如,在 MySQL 和 PostgreSQL 中禁用外键约束有很大不同:
MySQL
设置 FOREIGN_KEY_CHECKS=0;
PostgreSQL
实际上不太确定,但可能会涉及禁用触发器。
我想知道是否有办法以不可知的方式在 jOOQ 中为不同的数据库禁用数据库约束。例如,在 MySQL 和 PostgreSQL 中禁用外键约束有很大不同:
MySQL
设置 FOREIGN_KEY_CHECKS=0;
PostgreSQL
实际上不太确定,但可能会涉及禁用触发器。
这种特性是非常特定于供应商的——很难对这样的特性进行标准化。但是,在 jOOQ 的 DDL 解释器中,从 jOOQ 3.13 开始支持此功能:https ://github.com/jOOQ/jOOQ/issues/8105
但由于您只在两个数据库中寻找支持,您可以自己推出:
void disableForeignKeys(Configuration configuration) {
switch (configuration.family()) {
case MYSQL:
DSL.using(configuration).execute("set foreign_key_checks=0");
break;
case POSTGRES:
...
}
}