質問:

質問:

私は LibreOffice Base を使用して週次レポートを作成しています。time_spent大量の正規化されたデータを含む 1 つのテーブル ( という名前) があり、必要なレポートを作成するために必要な処理をビューを使用して実行しています。

毎週そのテーブルに新しいデータを追加し、その週のみの最新レポートをエクスポートしたいと考えています。

レポートの作成に使用されているすべてのビューを再作成する代わりに週に、 という名前のビューtime_spent_selection(基本的には )を作成しSELECT * FROM "time_spent" WHERE "week" = '2015-04'、それを使用して後続のすべてのビューを組み立てたいと考えていました。毎週、そのWHERE句を変更するだけで、適切な週のレポートが自動的に取得されます。

time_spent_selectionただし、LibreOffice ベースでは、次のエラー メッセージが表示され、ビューに加えられた変更の保存が拒否されます。

テーブルはビューによって参照されています: ステートメント [DROP VIEW "time_spent_selection"] にバグがあります

エラーメッセージダイアログ ここに画像の説明を入力してください

ここでは、定義でbugs参照されるビューの 1 つを示します。time_spent_selection

質問:

他のビューが依存するこのビューを強制的に変更するにはどうすればよいでしょうか?

これが可能であれば、すべてのビューを再計算する必要があることは理解していますが、これはまさに私が望んでいることです。

答え1

これはバックエンドデータベースの制限である可能性があります。デフォルトではHyperSQLデータベース(HSQLDB)バージョン1.8です。デフォルトのバックエンドを使用している場合は、ドキュメントは次の場所にあります。http://www.hsqldb.org/doc/1.8/guide/ch09.htmlALTER VIEW や REPLACE VIEW のようなものはありません。依存関係がない場合にのみ許可される DROP VIEW を使用する必要があります。

ALTER VIEWステートメントをサポートするHSQLDBの現在のバージョン(バージョン2.3)にアップグレードするオプションがあります(http://hsqldb.org/doc/guide/guide.html#dbc_view_creation)。GUI ではおそらくまだトランザクションはサポートされていないでしょうが、[ツール] -> [SQL] ウィンドウを使用して、データベースに ALTER VIEW コマンドを直接発行することができます。データベース コンポーネントをバージョン 2.3 にアップグレードする方法については、このフォーラム スレッドを参照してください。[チュートリアル] 「埋め込み HSQL データベース」の分割

あるいは、特定の日付をビューの SQL にハードコーディングする代わりに、ビューでその日付のフィルター/ダミー テーブルを参照するようにします。その後、1 列 1 行の「reportDate」テーブルを開いて、ビューに触れることなく毎週日付を変更することができます。

関連情報