2009-10-21 14 views
5

私は今日からプロジェクトのためにliquibaseを評価しています。liquibase noobの質問のカップル

誰もが手続き、関数、基本的にすべてのplsqlのものを作成するためにそれを使用していますか?

もしそうでなければ、埋め込みSQLコードをxmlファイルに書き込むことはできますか?

ありがとうございます。

答えて

5

手順を管理するためのliquibaseにcreateProcedureタグが組み込まれています。通常は、またはタグをrunOnChangeと組み合わせることが最善の方法です。したがって、定義を更新するときにのみ、liquibaseはプロシージャを更新します。そうすれば、時間の経過とともにchangelog xmlファイル間でdiffを実行し、プロシージャーがどのように変更されたかを見ることができます。

stored-procごとに参照ファイルにsqlFileタグを使用することも一般的です。または、あなたが言ったように、sqlタグを使用してカスタムSQLをインライン化できます。

+0

WOW !!!あなたがここにいることを嬉しく思っています:) – Tom

+0

私はどこにでもいます:あなたが他の質問や問題に遭遇した場合、またはより明確にする必要がある場合はLMK –

1

私はストアドプロシージャにliquibaseを使用していませんが、より汎用的な操作のためにLiquibaseの経験があります。

xmlファイルに埋め込まれているか、外部ファイルから参照されているカスタムSQLを記述することは可能です。

2

私は、ストアドプロシージャ、トリガ、および関数にsqlタグを使用しようとする際に問題が発生しましたが、私の場合、これらはMySQL JDBCドライバで問題になり、Liquibase自体ではありませんでした。私が解決した練習は、Nathanが示唆するようにsqlFileリファクタリングを使用し、ソースコードシステムでバージョン管理されたchangelogと同じプロジェクトのSP/trigger/functionコードを制御することです。これにより、実際のソースコードと同じようにSP /任意のコードを管理することができます。

sqlFileリファクタリングを含むchangeSetのrunOnChange = "true"の設定は必須です。手続き型データベースコードの実際のソース管理を可能にするのはこのスイッチです(ありがとう、Nathan)。

+0

ちょっとティム、私はそれの要点を取得すれば、 a {schemaName}/sprocs/sproc_name.xmlファイルを入力し、これらのファイルが更新されたときにLiquibaseでスキーマを検出して更新しますか? – David

+0

それはうまくいくだろうが、私はそれが少しかさばるだろうと思う。私が行ったことは、runOnChange = "true" changeSetsを持つ単一の "stored-proc.xml"(または何か)のchangelogを持ち、それぞれがdb/srcにある単一の冪等級のSP作成SQLスクリプトを実行していることです/procs/*.sql(またはどこか)。 SPコードが変更されるたびにその変更ログを更新する限り、データベースとソース管理に常に最新のSPが存在します。新しいSPを追加するときは、その変更ログに新しいチェンジセットを追加します。よく働く! – tlberglund

関連する問題