
저는 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.htmlALTER VIEW 또는 REPLACE VIEW와 같은 기능은 없습니다. 종속성이 없는 경우에만 허용되는 DROP VIEW를 사용해야 합니다.
ALTER VIEW 문(http://hsqldb.org/doc/guide/guide.html#dbc_view_creation). GUI는 여전히 트랜잭션을 지원하지 않지만 도구->SQL 창을 사용하여 데이터베이스에 ALTER VIEW 명령을 직접 실행할 수 있습니다. 데이터베이스 구성 요소를 버전 2.3으로 업그레이드하는 방법에 대한 지침은 이 포럼 스레드에 있습니다.[튜토리얼] "임베디드 HSQL 데이터베이스" 분할
또는 특정 날짜를 뷰의 SQL에 하드 코딩하는 대신 뷰가 해당 날짜에 대한 필터/더미 테이블을 참조하도록 합니다. 그런 다음 한 열, 한 행으로 구성된 "reportDate" 테이블을 열고 보기를 건드리지 않고도 매주 날짜를 변경할 수 있습니다.