jOOQ:与数据库无关的禁用约束的方法
jOOQ: Database-agnostic way of disabling constraints
我想知道是否有一种方法可以在 jOOQ 中以不可知的方式为不同的数据库禁用数据库约束。例如,在 MySQL 和 PostgreSQL 中禁用外键约束有很大不同:
MySQL
SET 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:
...
}
}
我想知道是否有一种方法可以在 jOOQ 中以不可知的方式为不同的数据库禁用数据库约束。例如,在 MySQL 和 PostgreSQL 中禁用外键约束有很大不同:
MySQL
SET 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:
...
}
}