是否可以在Liquibase中为每个数据库对象创建一个更改日志?

时间:2015-01-17 07:36:58

标签: sql-server database liquibase

我目前正在设置Liquibase,因此我可以对我的数据库进行版本控制。

然而,我一直在努力的一件事是想出一个像样的目录结构。谷歌给我留下了非常有限的例子,Liquibase“最佳实践”变更日志结构似乎过于简单(从每个版本中都有一个巨大的变更日志)。

理想情况下,我希望每个数据库对象都有一个更改日志。但是,我不完全确定这是可能的。例如,假设我首先创建表A,然后表B将外键返回到A,然后我创建表C.稍后我决定表B需要有一个外键到表C.但是,我怎么会在Liquibase处理这个?显而易见的答案是只需添加一个变更集,在创建这些表的变更集之后添加该外键约束。但是,如果我正在为每个db对象执行一个changelog,那么在没有重新排序changelog包含的情况下,我并没有真正看到“干净”的方式。您不能将该变更集放在表B更改日志中,因为表C可能尚不存在。

以下是按执行顺序显示流程的小插图:

(master.changelog.xml)

  • 创建表A(table.a.changelog.xml)
  • 使用FK创建表B到A(table.b.changelog.xml)
  • 创建表C(table.c.changelog.xml)
  • 从B添加FK到C(???不能存在于table.b.changelog.xml中)

如果您按架构拆分更改日志,则此问题会更加复杂。

是否有一种干净的方法可以为每个db-object提供一个更改日志,或者它不是真正可行的选项吗?

0 个答案:

没有答案