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:
            ...
    }
}