2012-03-28 6 views
2

Liquibaseを使用する場合、既存のデータを使用して挿入するデータの一部を生成する方法はありますか?Liquibaseで既存のデータを使用していますか?

たとえば、ID 5の行を更新するとしますが、実際にIDを取得する別のテーブルにリンクされているため、IDが5になることはわかりませんから。 SELECTクエリからIDを取得するようにLiquibaseに指示する方法はありますか?

私はLiquiBaseを本当に非常に構造化された非動的なアプローチのために設計されている感覚を得るよう、これは実際には不可能である推測しているが、それはお願いし傷つけることはありません。

ありがとうございました。

答えて

2

は、あなた自身のcustom refactoring classを生成するSQLを記述することも可能です。この機能は、チェンジセットのパラメータに基づいて静的SQLの生成をサポートするように設計されています。

..だから、それはデータベースへの接続を取得することが可能ですが、このアプローチに添付健康警告が生成されたSQLが動的である(あなたのデータは変更することができます)とデータベース・インスタンスに密接に関連していることです。

これが原因となります問題の例は、DBAは本番データベースに対して実行するSQLアップグレードスクリプトを生成することができないことです。

私はしばらくの間、このユースケースについて考えてきました。私はまだliquibaseがこのデータ管理の問題のための最善の解決策であるのか、dbunitのような追加のツールと組み合わせる必要があるのか​​どうかは分かりません。

4

既存のデータに基づいて組み込みの変更を使用してデータを挿入することはできませんが、ネストした選択を含むinsert文でタグを使用することはできます。例えば

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

注:SQL(インサート+選択のためのサポート)は、データベースベンダーに依存します。

関連する問題