Share via


Criando e implementando exibições

Antes de criar uma exibição, considere as seguintes diretrizes:

  • Você só pode criar exibições no banco de dados atual. Entretanto, as tabelas e exibições referenciadas pelas novas exibições podem existir em outros bancos de dados ou em outros servidores, se a exibição for definida usando consultas distribuídas.

  • Os nomes das exibições devem seguir as regras para identificadores e devem ser exclusivos para cada esquema. Além disso, o nome não deve ser igual a nenhuma tabela contida nesse esquema.

  • Você pode criar exibições em outras exibições. O MicrosoftSQL Server permite aninhar exibições. O aninhamento não pode exceder 32 níveis. O limite real de aninhamento de exibições pode ser menor dependendo da complexidade da exibição e da memória disponível.

  • Você não pode associar regras ou definições DEFAULT com as exibições.

  • Você não pode associar gatilhos AFTER com exibições, apenas gatilhos INSTEAD OF.

  • A consulta que define a exibição não pode incluir as cláusulas COMPUTE ou COMPUTE BY ou a palavra-chave INTO.

  • A consulta que define a exibição não pode incluir a cláusula ORDER BY, a não ser que exista também uma cláusula TOP na lista de seleção da instrução SELECT.

  • A consulta que define a exibição não pode incluir as cláusulas COMPUTE ou COMPUTE BY ou a palavra-chave INTO.

  • A consulta que define a exibição não pode conter a cláusula TABLESAMPLE.

  • Você não pode estabelecer definições de índice de texto completo em exibições.

  • Você não pode criar exibições temporárias e não pode criar exibições em tabelas temporárias.

  • Exibições, tabelas ou funções que participam de uma exibição, criadas com a cláusula SCHEMABINDING não podem ser canceladas, a menos que a exibição seja descartada ou alterada, de tal forma que não tenha mais associação de esquema. Além disso, as instruções ALTER TABLE nas tabelas, que participam de exibições com associação de esquema, falharão se essas instruções afetarem a definição da exibição.

  • Se uma exibição não for criada com uma cláusula SCHEMABINDING, sp_refreshview deverá ser executado quando forem realizadas as mudanças nos objetos subjacentes, que afetam a definição da exibição. Caso contrário, a exibição pode produzir resultados inesperados, quando consultado.

  • Você não pode emitir consultas de texto completo em uma exibição, embora uma definição de exibição possa incluir uma consulta de texto completo, se a consulta se referenciar a uma tabela que tenha sido configurada para indexação de texto completo.

  • Você deve especificar o nome de cada coluna na exibição se:

    • Todas as colunas da exibição são derivadas de uma expressão aritmética, uma função interna ou uma constante.

    • Duas ou mais das colunas na exibição tenham o mesmo nome (normalmente porque a definição da exibição, que inclui uma junção de colunas de duas ou mais tabelas diferentes, tem o mesmo nome).

    • Você deseja dar para todas as colunas na exibição um nome diferente da coluna da qual ela é derivada. (Você também pode renomear as colunas na exibição.) Uma coluna na exibição herda o tipo de dados da coluna da qual é derivada, renomeando-a ou não.

      ObservaçãoObservação

      Essa regra não é aplicável quando a exibição for baseada em uma consulta contendo uma junção externa porque as colunas podem mudar, de não aceitação de valores nulos, para a aceitação desses valores.

      Caso contrário, você não precisa especificar os nomes das colunas quando criar uma exibição. O SQL Server dá às colunas da exibição os mesmos nomes e tipos de dados como as colunas às quais a consulta, que define a exibição, se refere. A lista de seleção pode ser uma lista cheia ou parcial dos nomes de coluna nas tabelas base.

Para criar uma exibição, você deve ter uma permissão concedida pelo proprietário do banco de dados para fazer isso e, se a exibição for criada com a cláusula SCHEMABINDING, você deverá ter permissões em todas as tabelas ou exibições referenciadas na definição da exibição.

Por padrão, à medida que as linhas são adicionadas ou atualizadas por intermédio de uma exibição, elas desaparecem do escopo da exibição, quando não se encaixam mais nos critérios da consulta, definida na exibição. Por exemplo, pode se criar uma consulta, definindo uma exibição, que recupere todas as linhas de uma tabela, onde o salário de um funcionário é menor do que $30.000. Se o salário do funcionário for aumentado para $32.000, então a consulta à exibição não mostrará esse funcionário em particular, porque seu salário não atende mais aos critérios configurados pela exibição. Entretanto, a cláusula WITH CHECK OPTION força todas as instruções de modificação de dados, executadas em relação à exibição, a aderir aos critérios configurados dentro da instrução SELECT, que define a exibição. Se você usa essa cláusula, as linhas não podem ser modificadas de uma maneira que desapareçam da exibição. Qualquer modificação que provoque isso é cancelada e um erro é exibido.

Para criar uma exibição