Caso a sintaxe INSERT INTO nome_da_views SELECT * FROM tab...

Próximas questões
Com base no mesmo assunto
Q314426 Banco de Dados
A respeito das características gerais do MySql 5 e do Oracle 11g, julgue os itens que se seguem.

Caso a sintaxe INSERT INTO nome_da_views SELECT * FROM tabela1 fosse executada, seria gerado erro tanto no MySql quanto no Oracle, uma vez que é impossível realizar inserção de dados em views nesses dois SGBDs.

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: E - Errado

Vamos esclarecer o conceito: As views são objetos do banco de dados que representam uma visualização de uma ou mais tabelas através de uma consulta SQL pré-definida. Elas podem ser utilizadas para simplificar consultas complexas, restringir o acesso a dados ou fornecer uma forma de compatibilidade com versões anteriores de aplicações.

Contrariamente ao que é afirmado no enunciado da questão, tanto o MySQL quanto o Oracle permitem a inserção de dados em views, contanto que elas satisfaçam certas condições. Estas são:

  • A view deve encapsular uma consulta que referencia basicamente uma só tabela de dados.
  • As modificações feitas através da view devem ser aplicáveis diretamente a essa tabela subjacente.
  • A consulta da view não pode conter cláusulas como GROUP BY, DISTINCT, SUM(), COUNT() e etc., que alteram o número de linhas e a natureza dos dados retornados.

No caso de views que compreendem múltiplas tabelas ou incluem funções de agregação, a inserção de dados pode não ser possível ou pode ser muito restrita, dependendo das especificações do SGBD. Assim, a afirmação proposta é errônea, pois a possibilidade de inserção em views existe, mas está sujeita a determinadas regras e limitações.

É importante para o aluno entender que os SGBDs são projetados para fornecer flexibilidade na manipulação de dados, e isso inclui a capacidade de inserir dados em views, em situações específicas. Reconhecer essas nuances é essencial para trabalhar eficientemente com bancos de dados e resolver problemas que possam surgir.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Tanto no MySql quanto no Oracle é possível inserir dados em uma view, salvo algumas exceções que estão descritas aqui (http://dev.mysql.com/doc/refman/5.1/en/view-updatability.html) e aqui (http://docs.oracle.com/cd/E17952_01/refman-5.1-en/view-updatability.html)

A view is not updatable if it contains any of the following:

Aggregate functions (SUM(), MIN(), MAX(), COUNT(), and so forth)

DISTINCT

GROUP BY

HAVING

UNION or UNION ALL

Subquery in the select list

Certain joins (see additional join discussion later in this section)

Nonupdatable view in the FROM clause

A subquery in the WHERE clause that refers to a table in the FROM clause

Refers only to literal values (in this case, there is no underlying table to update)

Uses ALGORITHM = TEMPTABLE (use of a temporary table always makes a view nonupdatable)

Multiple references to any column of a base table.

With respect to insertability (being updatable with INSERT statements), an updatable view is insertable if it also satisfies these additional requirements for the view columns:

There must be no duplicate view column names.

The view must contain all columns in the base table that do not have a default value.

The view columns must be simple column references and not derived columns. A derived column is one that is not a simple column reference but is derived from an expression.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo