我想知道是否有办法以不可知的方式在jOOQ中为不同的数据库禁用数据库约束。例如,在MySQL和PostgreSQL中禁用外键约束有很大的不同:
的MySQL
SET FOREIGN_KEY_CHECKS=0;
的PostgreSQL
实际上并不太确定,但可能会涉及禁用触发器。
答案 0 :(得分:1)
这种功能非常符合供应商特定 - 很难对这样的功能进行标准化。
但是既然你只是在两个数据库中寻找支持,你可以自己动手:
void disableForeignKeys(Configuration configuration) {
switch (configuration.family()) {
case MYSQL:
DSL.using(configuration).execute("set foreign_key_checks=0");
break;
case POSTGRES:
...
}
}