2014-03-26 38 views
0

我看到一個屬性runOnChange,它在更改時重新運行更改集。但是,在自動重新應用之前,是否可以對此更改集應用回滾?例如,我有一個從變更集中調用的腳本。我在那裏做了一些改變,想要重新應用,但是在回滾之前需要調用,並且在應用新版本的腳本之後。 謝謝!當Liquibase中的更改集的校驗和更改時運行回滾

回答

1

在校驗和改變時沒有自動回滾changeSet的功能。不確定一般情況下是否可行,因爲如果配置發生變化,您不知道舊值會回滾到什麼程度。

根據您在腳本和數據庫中所做的操作,可以在腳本中手動回滾更改,並使用liquibase runOnChange =「true」changeSet標誌。

例如,如果你有一個創建存儲過程的腳本,您可以使用<變更runOnChange =「真」 >,然後定義你的程序爲「CREATE OR REPLACE」

如果你有一個腳本,定義一個視圖,你可以添加一個<sql> IF EXISTS VIEW_NAME DROP VIEW VIEW_NAME </sql >

+0

謝謝,Nathan。我理解你的想法。現在我們有了這樣的方法:當腳本被改變時,所有的腳本都是不可重複的,他們沒有這樣的代碼,新的組合回滾被應用,並且在它合併遷移腳本被啓動之後。作爲遷移的第一步,我希望分別使用liquibase調用相同的ddl/dml腳本來運行所有腳本,因此如果它們中的一些發生更改,我首先需要編寫一個回滾腳本。 – dbf

+0

我不確定我瞭解你正在嘗試做什麼。如果在stackoverflow評論之外更容易進入deails,你可以聯繫我nathan AT liquibase.org –