Изменить представление, от которого зависят другие представления
Я использую 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
в его определении.
Вопрос:
Как я могу принудительно изменить это представление, от которого зависят другие представления?
Я понимаю, что - если бы это было возможно - все взгляды пришлось бы пересчитать, и это именно то, чего я хочу.
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). GUI, вероятно, все еще не поддерживает транзакцию, но вы можете использовать окно Tools->SQL, чтобы напрямую выполнить команду ALTER VIEW для базы данных. Инструкции по обновлению компонента базы данных до версии 2.3 находятся в этой ветке форума: [Учебник] Разделение "встроенной базы данных HSQL"
Альтернативно, вместо жесткого кодирования определенной даты в SQL представления, используйте представление для таблицы фильтра / фиктивной таблицы для этой даты. Затем вы можете просто открыть таблицу "reportDate" с одной колонкой и одной строкой и изменять там каждую неделю, не касаясь представления.