我想在 liquibase 中应用变更集后运行代码。基本上,在将列添加到表后,我需要调用我的 DBA 提供的存储过程。我一直在研究 Liquibase API,但还没有发现任何明显的东西。
谢谢,赎金
我想在 liquibase 中应用变更集后运行代码。基本上,在将列添加到表后,我需要调用我的 DBA 提供的存储过程。我一直在研究 Liquibase API,但还没有发现任何明显的东西。
谢谢,赎金
今天早上有一些时间玩 liquibase 并想出了这个,这不是很好,但应该适用于我现在所拥有的。
Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(connection));
Liquibase liquibase = new Liquibase("update.xml", new FileSystemResourceAccessor(), database);
List<ChangeSet> changeSets = liquibase.listUnrunChangeSets(null);
liquibase.update(null);
for (RanChangeSet ranChangeSet: database.getRanChangeSetList()) {
ChangeSet found = null;
for (ChangeSet changeSet: changeSets) {
if (ranChangeSet.isSameAs(changeSet)) {
found = changeSet;
break;
}
}
if (found == null) {
// ran previously
continue;
}
System.out.println(ranChangeSet.getChangeLog());
for (Change change: found.getChanges()) {
if (change instanceof CreateTableChange) {
System.out.println(( (CreateTableChange)change ).getTableName());
}
// handle others
}
}