1
我想在liquibase中應用變更集後運行代碼。基本上我需要調用我的DBA在列添加到表之後提供的存儲過程。我一直在挖掘Liquibase API,但還沒有發現任何明顯的東西。如何從Liquibase生命週期中調用Java代碼?
感謝, 贖金
我想在liquibase中應用變更集後運行代碼。基本上我需要調用我的DBA在列添加到表之後提供的存儲過程。我一直在挖掘Liquibase API,但還沒有發現任何明顯的東西。如何從Liquibase生命週期中調用Java代碼?
感謝, 贖金
有一些時間與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
}
}
對我來說最爲明顯的是:使用['sql' change](http://www.liquibase.org/documentation/changes/sql.html)來調用存儲過程並將其包含/包含到你的主腳本非常結束? 但我想你已經遇到過這個。是否有必要在添加新列時運行SP? – Jens 2013-04-24 07:56:31
是的,那只是容易出現人爲錯誤,如果有人忘記了,那麼事情就處於不愉快的狀態 – 2013-04-24 16:41:57