MYSQL – Trabalhando com Views – Parte 02
Dando continuidade ao trabalho com Views.
Atualizando Views
Views podem ser constituídas facilmente, como vimos anteriormente. Mas para termos Views que podem receber declarações de atualização tais como UPDATE e DELETE, que de fato alteram as tabelas base (“based tables”), temos que ter alguns cuidados na criação do objeto de visualização. Uma View criada com funções agregadas, por exemplo, não poderá receber atualizações, pois os dados logicamente estão agregados ou agrupados e não teremos correspondências diretas para uma exclusão ou atualização.
Analise a seguinte situação: “crie uma View no banco de dados World para contar quantas línguas se falam em cada país que aparece nas tabelas Country e CountryLanguage”. Sendo esta a tarefa, teremos 1 registro apenas para cada país da tabela Country, contando quantas línguas aparecem na tabela para este único país na tabela CountryLanguage. Isso não nos possibilita atualizar uma determinada linha, pois, o que retornou dessa consulta foi um conjunto agrupado por país.
Quando temos uma View com um SELECT simples, sem agrupamento, podemos atualizá-la, esta que na verdade, somente receberá a declaração e quem serão atualizadas serão as tabelas base que tem seus dados mapeados para esta View. Para que você não estrague seu banco de dados World, criaremos uma tabela chamada “CountryPop”, com seguinte sintaxe mostrada na Figura 05.
Figura 05 – Criamos a tabela na qual utilizaremos como based table para uma View atualizável.
Com a tabela base criada, vamos então definir a View para que possamos atualizar a mesma. A Figura 06 mostra a View sendo definida, faremos um SELECT na View para exibir a linha que atualizaremos e na seqüência emitimos um UPDATE para que a mesma seja atualizada.
Figura 06 – Atualizando uma View.
Views com WITH CHECK OPTION
Podemos ainda trabalhar algumas restrições na criação de algumas Views, como utilizar a opção WITH CHECK OPTION. Atribuindo esta opção na criação de uma View significa que atualização que são emitidas terão que se encaixar às condições definidas na cláusula WHERE da consulta SELECT. Peguemos um exemplo de uma View que nos retorne todos os países da tabela CountryPop que acabamos de criar, que tenha populações maior ou igual a 100000000 (Figura 07).
Figura 07 – View com WITH CHECK OPTION.
Definimos na cláusula WHERE da View que somente poderia ser atualizado o número da população do país se este comando de atualização enviasse um número maior ou igual a 100000000. Na Figura 08, enviaremos um UPDATE para atualizar a população da Nigéria para 9999999, que é ligeiramente menor que o número definido no WHERE da View.
Figura 08 – Problemas com o número da população enviado para atualização.
WITH CHECK OPTION somente será aceita em meio a uma View atualizável, caso aquela que você vier a definir não seja atualizável, um erro será enviado e a mesma não será criada.
DROP VIEW
Para excluir uma View, basta utilizar o comando DROP VIEW view_name.
Conclusão
Vimos então como trabalhar com View ou visualizações que nada mais são que mapeamentos lógicos de outras tabelas em uma nova, definido com comandos SELECT’s. Vimos como criar Views, como alterar ou sobrescrever as mesmas e trabalhar com restrições ao atualizá-las. Num próximo artigo sobre Views, veremos como recuperar metadados, como criar Views e dar permissões nas mesmas parcialmente e os privilégios requeridos para um usuário cria-las.

Space do autor

Estudo comparativo entre banco de dados IBM Informix e Microsoft SQL

1
0
Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!