2012-03-28 112 views
2

使用Liquibase時,有什麼方法可以使用現有的數據來生成一些要插入的數據?在Liquibase中使用現有數據?

例如,說我會想更新與ID 5連勝,但我不知道前面的是ID爲5,因爲這是與另外一個表,我實際上將獲得ID從。有沒有什麼辦法讓我告訴Liquibase從SELECT查詢中獲取ID?

我猜這是不是真的儘可能給我的感覺Liquibase真的是專爲一個非常結構化的非動態的方式,但它不會傷害要求。

謝謝。

回答

2

有可能寫自己的custom refactoring class生成SQL。該功能旨在支持基於變更集參數生成靜態SQL。

所以..這是可行的,以獲得與數據庫的連接,但連接到這種方式的健康警示是,生成的SQL是動態的(你的數據可能會改變),並緊緊地綁在你的數據庫實例。

的問題,這將導致一個例子是一個無法生成SQL升級腳本的數據庫管理員對生產數據庫運行。

我一直在想這個用例一段時間。我仍然不知道liquibase是否是該數據管理問題的最佳解決方案,或者是否需要與其他工具(如dbunit)結合使用。

4

不能使用內置的變化插入基於現有數據的數據,但可以使用與嵌套選擇插入語句的標籤。

例如:

<changeSet> 
    <sql>insert into person (name, manager_id) values ('Fred', (select id from person where name='Ted'))</sql> 
</changeSet> 

注:SQL(並支持插入+選擇)取決於數據庫供應商。

相關問題