sql >> データベース >  >> RDS >> Oracle

Liquibaseを拡張して、ストアドプロシージャ、関数、トリガーを含む変更ログを生成するにはどうすればよいですか?

    一般的な戦略はSnapshotGeneratorを実装する新しいクラスを作成することですが、他にもいくつかの手順を実行する必要があります。一般的なスナップショットプロセスは次のとおりです。

    1. Liquibaseは、SnapshotGeneratorの実装を検索し、データベースで見つかったオブジェクトごとにaddsTo()を呼び出します。型については、スキーマの一部である型であるため、「スキーマのオブジェクトインスタンスが渡された場合」をすばやく実行する必要があります。
    2. DatabaseObjectを実装する新しいPackage、StoredProcedureなどのオブジェクトを作成する必要があります。それらはlikehteliquibase.structure.core.Tableクラスになり、オブジェクトの状態をキャプチャします。これらは、SnapshotGenerator.addsTo()メソッドで作成され、識別可能になります(名前、スキーマなどのセット)
    3. addTo()メソッドによって追加されたすべてのオブジェクトは、SnapshotGenerator.snapshotObject()メソッドを介して実行されます。このメソッドは、ストアドプロシージャのテキストなど、元々取得しなかった追加のメタデータをプルします。
    4. >
    5. liquibaseがオブジェクトを含むスナップショットを取得すると、そのスナップショットを別のスナップショット(generateChangeLogの場合は空のスナップショット)と比較して、2番目のスナップショットで欠落している、予期しない、変更されたオブジェクトを特定します。次に、MissingObjectChangeGenerator、UnexpectedObjectChangeGenerator、およびChangedObjectChangeGeneratorの実装を探します。 generateChangeLogの場合、「欠落している」オブジェクトのみが存在するため、MissingTriggerChangeGenerator、MissingPackagedChangeGeneratorなどを実装します。それらの仕事は、変更インスタンスを作成して欠落しているオブジェクトを作成することです。
    6. Msising * ChangeGeneratorクラスは、RawSqlChangeインスタンスを返すか、CreateTriggerChangeなどのChangeの新しい実装を作成できます。



    1. SQLiteAssetHelper:書き込み用にデータベースを開くことができませんでした(読み取り専用を試みます)

    2. EXPLAINを実行しているときに、キーのフィールド値がnullではなく、Extraが空白の場合、キーが使用されますか?

    3. Oracleで2列のデータをA、B形式で取得する方法

    4. Hibernate / JDBC / MySQLが1日ほど後に接続を切断するのはなぜですか?