
我使用 LibreOffice Base 建立每週報告。我有一個表(名為time_spent
),其中包含大量標準化數據,並且我正在使用視圖進行生成所需報告所需的處理。
每週我都會向該表添加新數據,並且我只想導出該週的新報告。
而不是重新建立用於建立報表的所有視圖每一個一周,我希望創建一個名為 的視圖time_spent_selection
,本質上是SELECT * FROM "time_spent" WHERE "week" = '2015-04'
,並使用它來組裝所有後續視圖。然後每週只需更改該WHERE
條款並自動獲取正確一周的報告。
但是,LibreOffice 基地拒絕保存對time_spent_selection
視圖所做的任何更改,並顯示以下錯誤訊息:
表格被檢視引用:語句中的錯誤 [DROP VIEW“time_spent_selection”]
這是其定義中bugs
引用的視圖之一。time_spent_selection
問題:
我如何強制修改其他視圖所依賴的此視圖?
我明白 - 如果這是可能的 - 所有視圖都必須重新計算,而這正是我想要的。
答案1
這可能是後端資料庫的限制,預設是 HyperSQL 資料庫 (HSQLDB) 版本 1.8 - 如果您使用預設後端,則文件位於http://www.hsqldb.org/doc/1.8/guide/ch09.html並且沒有諸如 ALTER VIEW 或 REPLACE VIEW 之類的內容。您必須使用 DROP VIEW,只有在沒有依賴項的情況下才允許使用。
您可以選擇升級到目前版本的 HSQLDB(版本 2.3),它支援 ALTER VIEW 語句(http://hsqldb.org/doc/guide/guide.html#dbc_view_creation)。 GUI 可能仍然不支援事務,但您可以使用「工具」->「SQL」視窗直接向資料庫發出 ALTER VIEW 命令。有關如何將資料庫元件升級到版本 2.3 的說明在此論壇主題中:[教程]拆分“嵌入式HSQL資料庫”
或者,不要將特定日期硬編碼到視圖的 SQL 中,而是讓視圖引用日期的篩選器/虛擬表。然後,您可以打開一列單行的“reportDate”表並每週更改其中的日期,而無需觸摸視圖。