MYSQL – Trabalhando com Views – Parte 02

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (2)  (0)

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.

 

sql-27-04-2008pic01.JPG 

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.

 

sql-27-04-2008pic02.JPG 

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).

sql-27-04-2008pic04.JPG

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.

 

sql-27-04-2008pic03.JPG

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.

 

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?