Schema差异
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
从 jOOQ 3.13 开始,以及 解释 DDL 的能力,jOOQ 现在能够创建两个版本的模式之间的“差异”。一个例子
// We're using interpreted Meta objects. But any other type of Meta can be used, too Meta m1 = create.meta("create table t (i int)"); Meta m2 = create.meta("create table t (i int, j int)"); // The diff is now printed in both directions: System.out.println("-- Schema upgrade"); System.out.println(m1.migrateTo(m2)); System.out.println(); System.out.println("-- Schema downgrade"); System.out.println(m2.migrateTo(m1));
以上程序的输出是
-- Schema upgrade alter table T add J int; -- Schema downgrade alter table T drop J;
差异算法可以明确地确定以下更改集
- 目录的添加和删除
- 模式的添加和删除
- 表的添加和删除
- 列的添加和删除
- 列类型更改
- 约束的添加、删除和重命名(包括主键、唯一键、外键和检查约束)
- 索引的添加、删除和重命名
- 视图的添加、删除和替换
- 序列的添加、删除和序列标志更改
- 域的添加、删除和属性更改
- 同义词的添加和删除
- 注释的添加和删除
以下更改集很难检测。可以实现一些启发式方法,但 jOOQ 尚未支持
- 目录重命名
- 模式重命名,以及在目录之间移动
- 表重命名,以及在模式之间移动
- 列重命名,以及在表之间移动
- 视图重命名
使用此 API 的另一种方法是 https://jooq.org.cn/diff 网站。
反馈
您对此页面有任何反馈吗? 我们很乐意听取!