SQLデータベースを使用するアプリケーションを書いていると困る事がある。
パフォーマンスの向上のためにストアドプロシージャを使用する事があるが、このストアドプロシージャが有るが為に、プログラムのアップデートが困難になる事があるためだ。
ちゃんとしたパッケージでインストーラがしっかりしていれば、インストール中にデータベースのアップデートを行えば良いのだろけど、そんなにしっかりしていないので、Exeだけ更新したらデータベースもそれに勝手に対応してしまってほしいのだ。
この解決方法を2つ考えた。
1つは、暗黙的にストアドプロシージャのバージョンを確認する機能をC++のストアドプロシージャオブジェクトに持たせ、プロシージャの実行の前にバージョンを確認してバージョンが違っている場合は、自動的に ALTER PROCEDURE を実行する。(無い場合は、CREATE する。)
2つ目は、バージョンごとにストアドプロシージャの名称を変更して、どんどん追加してしまう。
無ければ、Exeが持つ最新版を追加。。。
どちらかというと、2つ目の解決方法の方が簡単そうなので、テストしてみようかな。