Ändern Sie eine Ansicht, von der andere Ansichten abhängen

425
derabbink

Ich verwende LibreOffice Base, um wöchentliche Berichte zu erstellen. Ich habe eine (benannte time_spent) Tabelle, die viele normalisierte Daten enthält, und ich verwende Ansichten, um die erforderliche Verarbeitung durchzuführen, um die erforderlichen Berichte zu erstellen.

Jede Woche füge ich dieser Tabelle neue Daten hinzu, und ich möchte frische Berichte nur für diese Woche exportieren.

Anstatt alle Ansichten neu zu erstellen, die jede Woche zum Erstellen meines Berichts verwendet werden, habe ich gehofft, eine Ansicht mit dem Namen time_spent_selection, die im Wesentlichen heißt SELECT * FROM "time_spent" WHERE "week" = '2015-04', zu erstellen und diese anschließend zum Zusammenstellen aller nachfolgenden Ansichten zu verwenden. Jede Woche müsste dann nur noch diese WHEREKlausel ändern und automatisch die Berichte für die richtige Woche abrufen.

Die LibreOffice-Basis verweigert jedoch das Speichern aller an der time_spent_selectionAnsicht vorgenommenen Änderungen mit der folgenden Fehlermeldung:

Tabelle wird von view referenziert: Fehler in Anweisung [DROP VIEW "time_spent_selection"]

error message dialog enter image description here

Hier bugsist eine der Ansichten, auf die time_spent_selectionin ihrer Definition verwiesen wird .

Frage:

Wie kann ich diese Ansicht erzwingen, von der andere Ansichten abhängen?

Ich verstehe, dass - falls dies möglich wäre - alle Ansichten neu berechnet werden müssten, und genau das möchte ich.

0

1 Antwort auf die Frage

1
Lyrl

Dies kann eine Einschränkung der Backend-Datenbank sein, die standardmäßig die HyperSQL-Datenbank (HSQLDB) Version 1.8 ist. Wenn Sie das Standard-Backend verwenden, finden Sie die Dokumentation unter http://www.hsqldb.org/doc/1.8/guide/. ch09.html und hat nichts wie ALTER VIEW oder REPLACE VIEW. Sie müssen DROP VIEW verwenden, was nur zulässig ist, wenn keine Abhängigkeiten vorhanden sind.

Sie haben die Möglichkeit, ein Upgrade auf die aktuelle Version von HSQLDB (Version 2.3) durchzuführen, die die ALTER VIEW-Anweisung ( http://hsqldb.org/doc/guide/guide.html#dbc_view_creation ) unterstützt. Die GUI würde die Transaktion wahrscheinlich immer noch nicht unterstützen, aber Sie können das Fenster Tools-> SQL verwenden, um den Befehl ALTER VIEW direkt an die Datenbank zu senden. Anweisungen zum Upgrade der Datenbankkomponente auf Version 2.3 finden Sie in diesem Forenthread: [Tutorial] Aufteilen einer "eingebetteten HSQL-Datenbank"

Alternativ können Sie, anstatt ein bestimmtes Datum in der SQL der Ansicht fest zu kodieren, die Ansicht auf eine Filter- / Dummy-Tabelle für das Datum verweisen. Dann können Sie einfach die einspaltige, einzeilige "reportDate" -Tabelle öffnen und das Datum jede Woche darin ändern, ohne die Ansicht zu berühren.