1

schema_version テーブルを更新し、変更された PL/SQL パッケージ/手順をフライウェイでコードの重複なしに実行するには、どのような方法が望ましいでしょうか?

私の例では、PL/SQLコードの変更ごとにクラス・ファイルを作成する必要があります

public class V2_1__update_scripts extends AbstractMigration {
    // update package and procedures
}

AbstractMigration クラスは、db/updateフォルダー内のファイルを実行します。

public abstract class AbstractMigration implements SpringJdbcMigration {
    private static final Logger log = LoggerFactory.getLogger(AbstractMigration.class);

    @Override
    public void migrate(JdbcTemplate jdbcTemplate) throws Exception {
        Resource packageFolder = new ClassPathResource("db/update");
        Collection<File> files = FileUtils.listFiles(packageFolder.getFile(), new String[]{"sql"}, true);
        for (File file : files ) {
            log.info("Executing [{}]", file.getAbsolutePath());
            String fileContents = FileUtils.readFileToString(file);
            jdbcTemplate.execute(fileContents);
        }
    }
}

PL/SQLコードを実行するより良い方法はありますか?

4

3 に答える 3

1

コードを標準の migrations フォルダーに複製した方がよいのではないでしょうか。与えられた例では、db のバージョン N まで移行することはできないようです。以前のバージョンでは、現在のバージョンの pl/sql がすべて実行されるためです。あなたがこれに対する解決策に落ち着いたかどうか、私は興味があります。

于 2013-08-01T20:26:11.553 に答える
0

組み込みのサポートや、見逃した他のコマンドはありません。

頭の中で、ここで提示した方法か、SCM コミット後にジェネレーターを使用して新しい移行 SQL ファイルを生成する方法について考えます。

他の誰かがより良い解決策を見つけたかどうか見てみましょう。

于 2012-08-13T08:31:07.290 に答える