изменить представление, от которого зависят другие представления

345
derabbink

Я использую LibreOffice Base для создания еженедельных отчетов. У меня есть одна таблица (с именем time_spent), которая содержит много нормализованных данных, и я использую представления для обработки, необходимой для создания необходимых мне отчетов.

Каждую неделю я добавляю новые данные в эту таблицу и хочу экспортировать свежие отчеты только за эту неделю.

Вместо того чтобы заново создавать все представления, которые используются для создания моего отчета каждую неделю, я надеялся создать представление с именем time_spent_selection, которое по сути SELECT * FROM "time_spent" WHERE "week" = '2015-04', и использовать его для сборки всех последующих представлений. Тогда каждую неделю нужно будет только изменить это WHEREположение и автоматически получать отчеты за правильную неделю.

Однако база LibreOffice запрещает сохранять любые изменения, сделанные для time_spent_selectionпросмотра, со следующим сообщением об ошибке:

На таблицу ссылается view: ошибки в операторе [DROP VIEW "time_spent_selection"]

диалог сообщения об ошибке изменить представление, от которого зависят другие представления

Вот bugsодно из представлений, на которое ссылается time_spent_selectionэто определение.

Вопрос:

Как я могу принудительно изменить это представление, от которого зависят другие представления?

Я понимаю, что - если бы это было возможно - все взгляды пришлось бы пересчитать, и это именно то, чего я хочу.

0

1 ответ на вопрос

1
Lyrl

This may be a limitation of the backend database, which by default is HyperSQL Database (HSQLDB) version 1.8 - if you are using the default backend, the documentation is at http://www.hsqldb.org/doc/1.8/guide/ch09.html and does not have anything like ALTER VIEW or REPLACE VIEW. You have to use DROP VIEW, which is only allowed if there are no dependencies.

You have the option to upgrade to the current version of HSQLDB (version 2.3), which supports the ALTER VIEW statement (http://hsqldb.org/doc/guide/guide.html#dbc_view_creation). The GUI would probably still not support the transaction, but you could use the Tools->SQL window to directly issue the ALTER VIEW command to the database. Instructions on how to upgrade the database component to version 2.3 is in this forum thread: [Tutorial] Splitting an "embedded HSQL database"

Alternately, instead of hard-coding a particular date into the view's SQL, have the view reference a filter/dummy table for the date. Then you can just open up the one-column, one-row "reportDate" table and alter the date in there each week without touching the view.

Похожие вопросы