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

Я использую 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" с одной колонкой и одной строкой и изменять там каждую неделю, не касаясь представления.

Другие вопросы по тегам