2

我想知道是否有办法以不可知的方式在 jOOQ 中为不同的数据库禁用数据库约束。例如,在 MySQL 和 PostgreSQL 中禁用外键约束有很大不同:

MySQL

设置 FOREIGN_KEY_CHECKS=0;

PostgreSQL

实际上不太确定,但可能会涉及禁用触发器。

4

1 回答 1

3

这种特性是非常特定于供应商的——很难对这样的特性进行标准化。但是,在 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:
            ...
    }
}
于 2017-03-13T21:49:23.413 回答