modifica uma visão de que outras visualizações dependem

0

Eu uso o LibreOffice Base para criar relatórios semanais. Eu tenho uma tabela (chamada time_spent ) que contém muitos dados normalizados, e estou usando views para fazer o processamento necessário para produzir os relatórios que eu preciso.

Toda semana adiciono novos dados a essa tabela e quero exportar novos relatórios somente para essa semana.

Em vez de recriar todas as visualizações que estão sendo usadas para criar meu relatório todas semanas, eu esperava criar uma exibição chamada time_spent_selection , que é essencialmente SELECT * FROM "time_spent" WHERE "week" = '2015-04' , e use que para montar todas as vistas subseqüentes. Cada semana teria, então, apenas que alterar essa cláusula WHERE e obter automaticamente os relatórios da semana certa.

No entanto, a base do LibreOffice nega salvar quaisquer alterações feitas na time_spent_selection view com a seguinte mensagem de erro:

Table is referenced by view: bugs in statement [DROP VIEW "time_spent_selection"]

Aqui, bugs é uma das visualizações que fazem referência a time_spent_selection em sua definição.

Pergunta:

Como posso forçar a modificação dessa visualização, da qual outras visualizações dependem?

Eu entendo que - se isso fosse possível - todas as visões teriam que ser recalculadas, e isso é exatamente o que eu quero.

    
por derabbink 28.05.2015 / 11:54

1 resposta

1

Isso pode ser uma limitação do banco de dados backend, que por padrão é o Banco de Dados HyperSQL (HSQLDB) versão 1.8 - se você estiver usando o backend padrão, a documentação está em link e não tem nada como ALTER VIEW ou REPLACE VIEW. Você tem que usar DROP VIEW, que só é permitido se não houver dependências.

Você tem a opção de atualizar para a versão atual do HSQLDB (versão 2.3), que suporta a instrução ALTER VIEW ( link . A GUI provavelmente ainda não suportaria a transação, mas você poderia usar a janela Tools- > SQL para emitir diretamente o comando ALTER VIEW para o banco de dados. Instruções sobre como atualizar o componente do banco de dados para a versão 2.3 estão neste tópico do fórum: [ Tutorial] Dividindo um "banco de dados HSQL incorporado"

Como alternativa, em vez de codificar uma data específica no SQL da exibição, faça com que a exibição faça referência a uma tabela de filtro / simulação para a data. Em seguida, você pode simplesmente abrir a tabela "reportDate" de uma coluna e uma linha e alterar a data de cada semana sem tocar na visualização.

    
por 02.06.2015 / 21:32