在我的数据库中,每个表都有4个公共列——DATE_CREATED
、USER_CREATED
、DATE_MODIFIED
、USER_MODIFIED
,我想将此规则隐式传播到所有新表。
有可能做到这一点而不必手动生成liquibase脚本吗?
据我所知,使用liquibase是不可能的。
原因很简单:
如果您稍后改变主意并添加/删除其中一个默认列,该怎么办?如果你想更改所有的表,那么liquibase是不可能的,因为这意味着要更改所有的变更集,这是不允许的。
使用DSL生成liquibase脚本,然后可以向每个实体添加特定的列集,但使用liquibase的工作方式,自动方式会很困难。
Liquibase中没有任何内置功能来支持这一点。
您最简单的选择是使用纯XML级别的XML文档实体,因此对Liquibase是透明的。它们将允许您将通用XML附加到变更日志文件中。
更复杂的方法是使用Liquibase扩展系统(http://liquibase.org/extensions)它允许您重新定义将changeSet转换为SQL的逻辑。这将允许您注入所需的任何逻辑,包括通用数据类型、标准列或任何其他逻辑。
我不这么认为。
我的建议是,不要在所有表中添加上面提到的4列,因为对于现有的条目,可以在所有的表中保留null值。
请创建一个表,如主键id、表或实体名称以及您的四列名称。