Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Instância Gerida SQL do Azure
Azure Synapse Analytics
Analytics Platform System (PDW)
ponto final de análise SQL no Microsoft Fabric
Armazém no Microsoft Fabric
Base de dados SQL no Microsoft Fabric
Cria uma tabela virtual cujo conteúdo (colunas e linhas) é definido por uma consulta. Use esta instrução para criar uma exibição dos dados em uma ou mais tabelas no banco de dados. Por exemplo, um modo de exibição pode ser usado para as seguintes finalidades:
Focar, simplificar e personalizar a perceção que cada utilizador tem da base de dados.
Como um mecanismo de segurança, permitindo que os usuários acessem dados através da exibição, sem conceder aos usuários permissões para acessar diretamente as tabelas base subjacentes.
Para fornecer uma interface compatível com versões anteriores para emular uma tabela cujo esquema foi alterado.
Transact-SQL convenções de sintaxe
Sintaxe
Sintaxe do SQL Server e do Banco de Dados SQL do Azure.
CREATE [ OR ALTER ] VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ]
[ WITH <view_attribute> [ ,...n ] ]
AS select_statement
[ WITH CHECK OPTION ]
[ ; ]
<view_attribute> ::=
{
[ ENCRYPTION ]
[ SCHEMABINDING ]
[ VIEW_METADATA ]
}
Sintaxe para o Azure Synapse Analytics e o Parallel Data Warehouse.
CREATE VIEW [ schema_name . ] view_name [ ( column_name [ ,...n ] ) ]
AS <select_statement>
[;]
<select_statement> ::=
[ WITH <common_table_expression> [ ,...n ] ]
SELECT <select_criteria>
Sintaxe para Microsoft Fabric Data Warehouse e ponto de extremidade de análise SQL.
CREATE [ OR ALTER ] VIEW [ schema_name . ] view_name [ ( column_name [ ,...n ] ) ]
[ WITH <view_attribute> [ ,...n ] ] AS <select_statement>
[;]
<view_attribute> ::=
{
[ SCHEMABINDING ]
}
<select_statement> ::=
[ WITH <common_table_expression> [ ,...n ] ]
SELECT <select_criteria>
Argumentos
OU ALTER
Aplica-se a: Banco de Dados SQL do Azure e SQL Server (começando com o SQL Server 2016 (13.x) SP1).
Condicionalmente altera a vista apenas se ela já existir.
schema_name
É o nome do esquema ao qual a exibição pertence.
view_name
É o nome da vista. Os nomes de exibição devem seguir as regras para identificadores. Especificar o nome do proprietário da exibição é opcional.
coluna
É o nome a ser usado para uma coluna em um modo de exibição. Um nome de coluna é necessário somente quando uma coluna é derivada de uma expressão aritmética, uma função ou uma constante; quando duas ou mais colunas podem ter o mesmo nome, normalmente devido a uma junção; ou quando uma coluna em um modo de exibição é especificada um nome diferente daquele da coluna da qual ela é derivada. Nomes de colunas também podem ser atribuídos na SELECT
instrução.
Se coluna não for especificada, as colunas de exibição adquirirão os mesmos nomes que as colunas na SELECT
instrução.
Observação
Nas colunas da exibição, as permissões para um nome de coluna se aplicam a uma CREATE VIEW
instrução ou ALTER VIEW
, independentemente da fonte dos dados subjacentes. Por exemplo, se forem SalesOrderID
concedidas permissões na coluna em uma instrução CREATE VIEW, uma ALTER VIEW
instrução poderá nomear a SalesOrderID
coluna com um nome de coluna diferente, como OrderRef
, e ainda ter as permissões associadas à exibição usando SalesOrderID
.
COMO
Especifica as ações que o modo de exibição deve executar.
select_statement
A SELECT
instrução que define a exibição. A instrução pode usar mais de uma tabela e outros modos de exibição. As permissões apropriadas são necessárias para selecionar entre os objetos referenciados na SELECT
cláusula do modo de exibição criado.
Um modo de exibição não precisa ser um subconjunto das linhas e colunas de uma tabela específica. Pode ser criado um modo de exibição que usa mais de uma tabela ou outros modos de exibição com uma SELECT
cláusula de qualquer complexidade.
Em uma definição de exibição indexada, a SELECT
instrução deve ser uma instrução de tabela única ou uma multitabela JOIN
com agregação opcional.
As SELECT
cláusulas em uma definição de exibição não podem incluir:
Uma
ORDER BY
cláusula, a menos que também haja umaTOP
cláusula na lista selecionada daSELECT
instruçãoImportante
A
ORDER BY
cláusula é usada apenas para determinar as linhas que são retornadas pelaTOP
cláusula ouOFFSET
na definição de exibição. AORDER BY
cláusula não garante resultados ordenados quando a exibição é consultada, a menos queORDER BY
também seja especificada na própria consulta.A palavra-chave
INTO
A
OPTION
cláusulaUma referência a uma tabela temporária ou a uma variável de tabela.
Como select_statement usa a SELECT
instrução, é válido usar dicas de junção e dicas de tabela, conforme especificado na FROM
cláusula. Para obter mais informações, consulte FROM (Transact-SQL) e SELECT (Transact-SQL).
Funções e instruções múltiplas SELECT
separadas por UNION
ou UNION ALL
podem ser usadas em select_statement.
OPÇÃO DE SELEÇÃO
Força todas as instruções de modificação de dados executadas em relação à exibição a seguir os critérios definidos em select_statement. Quando uma linha é modificada por meio de um modo de exibição, o WITH CHECK OPTION
garante que os dados permaneçam visíveis através do modo de exibição depois que a modificação for confirmada.
Observação
O CHECK OPTION
só se aplica a atualizações feitas através da vista. Ele não tem aplicabilidade a quaisquer atualizações realizadas diretamente nas tabelas subjacentes de uma exibição.
ENCRIPTAÇÃO
Aplica-se a: SQL Server 2008 (10.0.x) e posterior e Banco de Dados SQL do Azure.
Criptografa as entradas em sys.syscomments que contêm o texto da CREATE VIEW
instrução. O uso WITH ENCRYPTION
impede que o modo de exibição seja publicado como parte da replicação do SQL Server.
SCHEMABINDING
Vincula o modo de exibição ao esquema da(s) tabela(s) subjacente(s). Quando SCHEMABINDING
é especificado, a tabela ou tabelas base não podem ser modificadas de uma forma que afete a definição de exibição. A própria definição de exibição deve primeiro ser modificada ou descartada para remover dependências na tabela a ser modificada. Quando você usa SCHEMABINDING
o , o select_statement deve incluir os nomes de duas partes (esquema.objeto) de tabelas, exibições ou funções definidas pelo usuário que são referenciadas. Todos os objetos referenciados devem estar no mesmo banco de dados.
Modos de exibição ou tabelas que participam de um modo de exibição criado com a cláusula SCHEMABINDING não podem ser descartados, a menos que esse modo de exibição seja descartado ou alterado para que não tenha mais vinculação de esquema. Caso contrário, o Mecanismo de Banco de Dados gerará um erro. Além disso, a execução de ALTER TABLE
instruções em tabelas que participam de modos de exibição que têm vinculação de esquema falha quando essas instruções afetam a definição de exibição.
VIEW_METADATA
Especifica que a instância do SQL Server retornará às APIs DB-Library, ODBC e OLE DB as informações de metadados sobre o modo de exibição, em vez da tabela ou tabelas base, quando os metadados do modo de navegação estiverem sendo solicitados para uma consulta que faça referência ao modo de exibição. Os metadados do modo de navegação são metadados adicionais que a instância do SQL Server retorna a essas APIs do lado do cliente. Esses metadados permitem que as APIs do lado do cliente implementem cursores atualizáveis do lado do cliente. Os metadados do modo de navegação incluem informações sobre a tabela base à qual pertencem as colunas do conjunto de resultados.
Para modos de exibição criados com VIEW_METADATA
o , os metadados do modo de navegação retornam o nome do modo de exibição e não os nomes da tabela base quando descrevem colunas do modo de exibição no conjunto de resultados.
Quando um modo de exibição é criado usando WITH VIEW_METADATA
o , todas as suas colunas, exceto uma coluna de carimbo de data/hora , são atualizáveis se o modo de exibição tiver INSTEAD OF INSERT
ou INSTEAD OF UPDATE
for acionado. Para obter mais informações sobre modos de exibição atualizáveis, consulte Observações.
Observações
Uma exibição só pode ser criada no banco de dados atual. A CREATE VIEW
deve ser a primeira instrução em um lote de consulta. Uma vista pode ter um máximo de 1.024 colunas.
Ao consultar por meio de uma exibição, o Mecanismo de Banco de Dados verifica se todos os objetos de banco de dados referenciados em qualquer lugar da instrução existem e se são válidos no contexto da instrução e se as instruções de modificação de dados não violam nenhuma regra de integridade de dados. Uma verificação que falha retorna uma mensagem de erro. Uma verificação bem-sucedida traduz a ação em uma ação em relação à tabela ou tabelas subjacentes.
Se um modo de exibição depender de uma tabela ou exibição que foi descartada, o Mecanismo de Banco de Dados produzirá uma mensagem de erro quando alguém tentar usar o modo de exibição. Se uma nova tabela ou exibição for criada e a estrutura da tabela não for alterada da tabela base anterior para substituir a descartada, a exibição se tornará novamente utilizável. Se a nova tabela ou estrutura de exibição for alterada, a exibição deverá ser descartada e recriada.
Se um modo de exibição não for criado com a SCHEMABINDING
cláusula, execute sp_refreshview quando forem feitas alterações nos objetos subjacentes ao modo de exibição que afetam a definição do modo de exibição. Caso contrário, o modo de exibição pode produzir resultados inesperados quando é consultado.
Quando um modo de exibição é criado, as informações sobre o modo de exibição são armazenadas nas seguintes exibições de catálogo: sys.views, sys.columns e sys.sql_expression_dependencies. O texto da CREATE VIEW
instrução é armazenado na exibição de catálogo do sys.sql_modules .
Uma consulta que usa um índice em um modo de exibição definido com expressões numéricas ou flutuantes pode ter um resultado diferente de uma consulta semelhante que não usa o índice no modo de exibição. Essa diferença pode ser causada por erros de arredondamento durante INSERT
, DELETE
ou UPDATE
ações em tabelas subjacentes.
O Mecanismo de Banco de Dados salva as configurações de e SET QUOTED_IDENTIFIER
quando um modo de SET ANSI_NULLS
exibição é criado. Essas configurações originais são usadas para analisar o modo de exibição quando ele é usado. Portanto, quaisquer configurações de sessão de cliente para SET QUOTED_IDENTIFIER
e SET ANSI_NULLS
não afetam a definição de exibição quando a exibição é acessada.
No Azure Synapse Analytics, as exibições não oferecem suporte à associação de esquema. Portanto, se forem feitas alterações nos objetos subjacentes, você deve soltar e recriar a exibição para atualizar os metadados subjacentes. Para obter mais informações, consulte Exibições T-SQL com pool SQL dedicado e pool SQL sem servidor no Azure Synapse Analytics.
No Azure Synapse Analytics, não há suporte para modos de exibição atualizáveis, gatilhos DML (de qualquer tipo AFTER
ou INSTEAD OF
) e modos de exibição particionados. Para obter mais informações, consulte Exibições T-SQL com pool SQL dedicado e pool SQL sem servidor no Azure Synapse Analytics.
No Azure Synapse Analytics, não há suporte para modos de exibição particionados. Para obter mais informações, consulte Exibições T-SQL com pool SQL dedicado e pool SQL sem servidor no Azure Synapse Analytics.
No banco de dados SQL da malha, as exibições podem ser criadas, mas não são espelhadas no Fabric OneLake. Para obter mais informações, consulte Limitações do espelhamento do banco de dados SQL de malha.
Vistas atualizáveis
Você pode modificar os dados de uma tabela base subjacente por meio de uma exibição, desde que as seguintes condições sejam verdadeiras:
Quaisquer modificações, incluindo
UPDATE
,INSERT
eDELETE
instruções, devem fazer referência a colunas de apenas uma tabela base.As colunas que estão sendo modificadas no modo de exibição devem fazer referência direta aos dados subjacentes nas colunas da tabela. As colunas não podem ser derivadas de qualquer outra forma, como através do seguinte:
Uma função agregada:
AVG
,COUNT
,SUM
,MIN
,MAX
,GROUPING
,STDEV
, ,STDEVP
VAR
, eVARP
.Um cálculo. A coluna não pode ser calculada a partir de uma expressão que usa outras colunas. As colunas que são formadas usando os operadores set UNION, UNION ALL, CROSSJOIN, EXCEPT, e INTERSECT equivalem a um cálculo e também não são atualizáveis.
As colunas que estão sendo modificadas não são afetadas por
GROUP BY
,HAVING
ouDISTINCT
cláusulas.TOP não é usado em nenhum lugar no select_statement da exibição junto com a
WITH CHECK OPTION
cláusula.
As restrições anteriores aplicam-se a quaisquer subconsultas na cláusula FROM da vista, tal como se aplicam à vista em si. Geralmente, o Mecanismo de Banco de Dados deve ser capaz de rastrear inequivocamente modificações da definição de exibição para uma tabela base. Para obter mais informações, consulte Modificar dados por meio de um modo de exibição.
Se as restrições anteriores impedirem que você modifique os dados diretamente por meio de uma exibição, considere as seguintes opções:
EM VEZ DE GATILHOS
INSTEAD OF
Gatilhos podem ser criados em um modo de exibição para tornar um modo de exibição atualizável. OINSTEAD OF
gatilho é executado em vez da instrução de modificação de dados na qual o gatilho é definido. Esse gatilho permite que o usuário especifique o conjunto de ações que devem acontecer para processar a instrução de modificação de dados. Portanto, se existir umINSTEAD OF
gatilho para uma exibição em uma instrução de modificação de dados específica (INSERT
,UPDATE
, ouDELETE
), a exibição correspondente será atualizável por meio dessa instrução. Para obter mais informações sobreINSTEAD OF
gatilhos, consulte Gatilhos DML.Vistas particionadas
Se o modo de exibição for um modo de exibição particionado, ele será atualizável, sujeito a certas restrições. Quando necessário, o Mecanismo de Banco de Dados distingue modos de exibição particionados locais como os modos de exibição em que todas as tabelas participantes e o modo de exibição estão na mesma instância do SQL Server, e modos de exibição particionados distribuídos como os modos de exibição nos quais pelo menos uma das tabelas no modo de exibição reside em um servidor diferente ou remoto.
Vistas particionadas
Um modo de exibição particionado é um modo de exibição definido por uma UNION ALL
das tabelas membros estruturadas da mesma maneira, mas armazenadas separadamente como várias tabelas na mesma instância do SQL Server ou em um grupo de instâncias autônomas de servidores SQL Server, chamados servidores de banco de dados federados.
Observação
O método preferido para particionar dados locais para um servidor é através de tabelas particionadas. Para obter mais informações, consulte Tabelas Particionadas e Índices.
Quando você projeta um esquema de particionamento, deve ficar claro quais dados pertencem a cada partição. Por exemplo, os dados da Customers
tabela são distribuídos em três tabelas de membros em três locais de servidor: Customers_33
on Server1
, Customers_66
on Server2
e Customers_99
on Server3
.
Uma vista particionada em Server1
é definida da seguinte forma:
--Partitioned view as defined on Server1
CREATE VIEW Customers
AS
--Select from local member table.
SELECT *
FROM CompanyData.dbo.Customers_33
UNION ALL
--Select from member table on Server2.
SELECT *
FROM Server2.CompanyData.dbo.Customers_66
UNION ALL
--Select from member table on Server3.
SELECT *
FROM Server3.CompanyData.dbo.Customers_99;
Geralmente, diz-se que uma vista é uma vista particionada se tiver a seguinte forma:
SELECT <select_list1>
FROM T1
UNION ALL
SELECT <select_list2>
FROM T2
UNION ALL
...
SELECT <select_listn>
FROM Tn;
Condições para criar vistas particionadas
A seleção
list
Na lista de colunas da definição de exibição, selecione todas as colunas nas tabelas de membros.
Certifique-se de que as colunas na mesma posição ordinal de cada uma
select list
são do mesmo tipo, incluindo agrupamentos. Não é suficiente que as colunas sejam tipos implicitamente conversíveis, como é geralmente o caso deUNION
.Além disso, pelo menos uma coluna (por exemplo
<col>
) deve aparecer em todas as listas de seleção na mesma posição ordinal. Defina<col>
de forma que as tabelasT1, ..., Tn
de membros tenham restriçõesC1, ..., Cn
CHECK definidas em<col>
, respectivamente.A restrição
C1
definida na tabelaT1
deve ter a seguinte forma:C1 ::= < simple_interval > [ OR < simple_interval > OR ...] < simple_interval > :: = < col > { < | > | \<= | >= | = < value >} | < col > BETWEEN < value1 > AND < value2 > | < col > IN ( value_list ) | < col > { > | >= } < value1 > AND < col > { < | <= } < value2 >
As restrições devem ser de tal forma que qualquer valor especificado de
<col>
possa satisfazer, no máximo, uma das restriçõesC1, ..., Cn
, de modo que as restrições formem um conjunto de intervalos separados ou não sobrepostos. A coluna<col>
na qual as restrições separadas são definidas é chamada de coluna de particionamento. A coluna de particionamento pode ter nomes diferentes nas tabelas subjacentes. As restrições devem estar em um estado habilitado e confiável para que atendam às condições mencionadas anteriormente da coluna de particionamento. Se as restrições estiverem desabilitadas, reative a verificação de restrições usando aCHECK CONSTRAINT *constraint_name*
opção deALTER TABLE
, e usando aWITH CHECK
opção para validá-las.Os exemplos a seguir mostram conjuntos válidos de restrições:
{ [col < 10], [col between 11 and 20] , [col > 20] } { [col between 11 and 20], [col between 21 and 30], [col between 31 and 100] }
A mesma coluna não pode ser usada várias vezes na lista de seleção.
Coluna de particionamento
A coluna de particionamento faz parte da CHAVE PRIMÁRIA da tabela.
Não pode ser uma coluna computada, de identidade, padrão ou de carimbo de data/hora .
Se houver mais de uma restrição na mesma coluna em uma tabela membro, o Mecanismo de Banco de Dados ignorará todas as restrições e não as considerará ao determinar se a exibição é uma exibição particionada. Para atender às condições do modo de exibição particionado, verifique se há apenas uma restrição de particionamento na coluna de particionamento.
Não há restrições sobre a capacidade de atualização da coluna de particionamento.
Tabelas de membros ou tabelas subjacentes
T1, ..., Tn
As tabelas podem ser tabelas locais ou tabelas de outros computadores que executam o SQL Server que são referenciadas por meio de um nome de quatro partes ou um nome baseado em OPENDATASOURCE ou OPENROWSET. A sintaxe OPENDATASOURCE e OPENROWSET pode especificar um nome de tabela, mas não uma consulta de passagem. Para obter mais informações, consulte OPENDATASOURCE (Transact-SQL) e OPENROWSET (Transact-SQL).
Se uma ou mais das tabelas de membros forem remotas, a exibição será chamada de exibição particionada distribuída e condições adicionais serão aplicadas. Eles são descritos mais adiante nesta seção.
A mesma tabela não pode aparecer duas vezes no conjunto de tabelas que estão sendo combinadas com a
UNION ALL
instrução.As tabelas de membros não podem ter índices criados em colunas computadas na tabela.
As tabelas de membros têm todas as restrições de CHAVE PRIMÁRIA no mesmo número de colunas.
Todas as tabelas de membros na exibição têm a mesma configuração de preenchimento ANSI. Isso pode ser definido usando a opção de opções do usuário ou
sp_configure
a instrução SET.
Condições para modificar dados em modos de exibição particionados
As restrições a seguir se aplicam a instruções que modificam dados em modos de exibição particionados:
A
INSERT
instrução fornece valores para todas as colunas na exibição, mesmo que as tabelas de membros subjacentes tenham umaDEFAULT
restrição para essas colunas ou se permitiremNULL
valores. Para as colunas da tabela de membros que têmDEFAULT
definições, as instruções não podem usar explicitamente a palavra-chaveDEFAULT
.O valor que está sendo inserido na coluna de particionamento satisfaz pelo menos uma das restrições subjacentes; Caso contrário, a ação Inserir falhará com uma violação de restrição.
UPDATE
As instruções não podem especificar aDEFAULT
palavra-chave como um valor naSET
cláusula, mesmo que a coluna tenha umDEFAULT
valor definido na tabela de membros correspondente.As colunas no modo de exibição que são uma coluna de identidade em uma ou mais das tabelas de membros não podem ser modificadas usando uma
INSERT
instrução orUPDATE
.Se uma das tabelas de membros contiver uma coluna de carimbo de data/hora , os dados não poderão ser modificados usando uma
INSERT
instrução orUPDATE
.Se uma das tabelas de membros contiver um gatilho ou uma
ON UPDATE CASCADE/SET NULL/SET DEFAULT
restrição ouON DELETE CASCADE/SET NULL/SET DEFAULT
, a exibição não poderá ser modificada.INSERT
,UPDATE
eDELETE
ações contra um modo de exibição particionado não são permitidas se houver uma associação automática com o mesmo modo de exibição ou com qualquer uma das tabelas de membros na instrução.A importação em massa de dados para uma exibição particionada não é suportada pelas
bcp
instruções ouBULK INSERT
eINSERT ... SELECT * FROM OPENROWSET(BULK...)
. No entanto, você pode inserir várias linhas em um modo de exibição particionado usando a instrução INSERT .Observação
Para atualizar um modo de exibição particionado, o usuário deve ter
INSERT
,UPDATE
eDELETE
permissões nas tabelas de membros.
Condições adicionais para vistas particionadas distribuídas
Para exibições particionadas distribuídas (quando uma ou mais tabelas de membros são remotas), as seguintes condições adicionais se aplicam:
Uma transação distribuída é iniciada para garantir a atomicidade em todos os nós afetados pela atualização.
Defina a
XACT_ABORT SET
opção comoON
paraINSERT
,UPDATE
ouDELETE
instruções para funcionar.Todas as colunas em tabelas remotas do tipo smallmoney que são referenciadas em uma exibição particionada são mapeadas como dinheiro. Portanto, as colunas correspondentes (na mesma posição ordinal na lista de seleção) nas tabelas locais também devem ser do tipo dinheiro.
No nível de compatibilidade de banco de dados 110 e superior, todas as colunas em tabelas remotas do tipo smalldatetime referenciadas em um modo de exibição particionado são mapeadas como smalldatetime. As colunas correspondentes (na mesma posição ordinal na lista de seleção) nas tabelas locais devem ser smalldatetime. Essa é uma alteração no comportamento de versões anteriores do SQL Server nas quais todas as colunas em tabelas remotas do tipo smalldatetime referenciadas em um modo de exibição particionado são mapeadas como datetime e as colunas correspondentes em tabelas locais devem ser do tipo datetime. Para obter mais informações, consulte ALTER DATABASE Compatibility Level (Transact-SQL).
Qualquer servidor vinculado na exibição particionada não pode ser um servidor vinculado de loopback. Este é um servidor vinculado que aponta para a mesma instância do SQL Server.
A configuração da opção é ignorada SET ROWCOUNT
para INSERT
, UPDATE
e DELETE
ações que envolvem exibições particionadas atualizáveis e tabelas remotas.
Quando as tabelas de membros e a definição de exibição particionada estão em vigor, o otimizador de consulta do SQL Server cria planos inteligentes que usam consultas de forma eficiente para acessar dados de tabelas de membros. Com as CHECK
definições de restrição, o processador de consultas mapeia a distribuição de valores-chave entre as tabelas de membros. Quando um usuário emite uma consulta, o processador de consultas compara o mapa com os valores especificados na WHERE
cláusula e cria um plano de execução com uma quantidade mínima de transferência de dados entre servidores membros. Portanto, se algumas tabelas de membros estiverem localizadas em servidores remotos, a instância do SQL Server resolverá consultas distribuídas para que a quantidade de dados distribuídos que precisam ser transferidos seja mínima.
Considerações sobre replicação
Para criar exibições particionadas em tabelas de membros envolvidas na replicação, aplicam-se as seguintes considerações:
Se as tabelas subjacentes estiverem envolvidas na replicação de mesclagem ou na replicação transacional com a atualização de assinaturas, verifique se a coluna uniqueidentifier também está incluída na lista de seleção.
Quaisquer
INSERT
ações no modo de exibição particionado devem fornecer umNEWID()
valor para a coluna uniqueidentifier . Qualquer ação UPDATE em relação à coluna uniqueidentifier deve ser fornecidaNEWID()
como o valor porque a palavra-chave DEFAULT não pode ser usada.A replicação de atualizações feitas usando o modo de exibição é a mesma que quando as tabelas são replicadas em dois bancos de dados diferentes: as tabelas são servidas por agentes de replicação diferentes e a ordem das atualizações não é garantida.
Permissões
Requer a permissão CREATE VIEW no banco de dados e a permissão ALTER no esquema no qual a exibição está sendo criada.
Exemplos
Os exemplos a seguir usam o AdventureWorks2022
banco de dados ou AdventureWorksDW2022
.
Um. Use CREATE VIEW para criar um modo de exibição
O exemplo a seguir cria um modo de exibição usando uma SELECT
instrução. Uma vista simples é útil quando uma combinação de colunas é consultada com frequência. Os dados dessa exibição vêm das HumanResources.Employee
tabelas e Person.Person
do banco de dados AdventureWorks2022. Os dados fornecem informações de nome e data de contratação para os funcionários da Adventure Works Cycles. A visualização poderia ser criada para a pessoa responsável pelo acompanhamento de aniversários de trabalho, mas sem dar a essa pessoa acesso a todos os dados nessas tabelas.
CREATE VIEW hiredate_view
AS
SELECT p.FirstName, p.LastName, e.BusinessEntityID, e.HireDate
FROM HumanResources.Employee AS e
JOIN Person.Person AS p ON e.BusinessEntityID = p.BusinessEntityID ;
GO
B. Use COM CRIPTOGRAFIA
O exemplo a seguir usa a WITH ENCRYPTION
opção e mostra colunas computadas, colunas renomeadas e várias colunas.
Aplica-se a: SQL Server 2008 (10.0.x) e posterior e Banco de dados SQL.
CREATE VIEW Purchasing.PurchaseOrderReject
WITH ENCRYPTION
AS
SELECT PurchaseOrderID, ReceivedQty, RejectedQty,
RejectedQty / ReceivedQty AS RejectRatio, DueDate
FROM Purchasing.PurchaseOrderDetail
WHERE RejectedQty / ReceivedQty > 0
AND DueDate > CONVERT(DATETIME,'20010630',101) ;
GO
C. Use a opção WITH CHECK
O exemplo a seguir mostra um modo de exibição chamado dbo.SeattleOnly
que faz referência a cinco tabelas e permite que as modificações de dados se apliquem apenas aos funcionários que moram em Seattle.
CREATE VIEW dbo.SeattleOnly
AS
SELECT p.LastName, p.FirstName, e.JobTitle, a.City, sp.StateProvinceCode
FROM HumanResources.Employee e
INNER JOIN Person.Person p
ON p.BusinessEntityID = e.BusinessEntityID
INNER JOIN Person.BusinessEntityAddress bea
ON bea.BusinessEntityID = e.BusinessEntityID
INNER JOIN Person.Address a
ON a.AddressID = bea.AddressID
INNER JOIN Person.StateProvince sp
ON sp.StateProvinceID = a.StateProvinceID
WHERE a.City = 'Seattle'
WITH CHECK OPTION ;
GO
D. Utilizar funções incorporadas numa vista
O exemplo a seguir mostra uma definição de exibição que inclui uma função interna. Ao usar funções, você deve especificar um nome de coluna para a coluna derivada.
CREATE VIEW Sales.SalesPersonPerform
AS
SELECT TOP (100) SalesPersonID, SUM(TotalDue) AS TotalSales
FROM Sales.SalesOrderHeader
WHERE OrderDate > CONVERT(DATETIME,'20001231',101)
GROUP BY SalesPersonID;
GO
E. Usar dados particionados
O exemplo a seguir usa tabelas denominadas SUPPLY1
, SUPPLY2
, SUPPLY3
e SUPPLY4
. Estas tabelas correspondem às tabelas de fornecedores de quatro escritórios, localizados em diferentes regiões.
--Create the tables and insert the values.
CREATE TABLE dbo.SUPPLY1 (
supplyID INT PRIMARY KEY CHECK (supplyID BETWEEN 1 and 150),
supplier CHAR(50)
);
CREATE TABLE dbo.SUPPLY2 (
supplyID INT PRIMARY KEY CHECK (supplyID BETWEEN 151 and 300),
supplier CHAR(50)
);
CREATE TABLE dbo.SUPPLY3 (
supplyID INT PRIMARY KEY CHECK (supplyID BETWEEN 301 and 450),
supplier CHAR(50)
);
CREATE TABLE dbo.SUPPLY4 (
supplyID INT PRIMARY KEY CHECK (supplyID BETWEEN 451 and 600),
supplier CHAR(50)
);
GO
--Create the view that combines all supplier tables.
CREATE VIEW dbo.all_supplier_view
WITH SCHEMABINDING
AS
SELECT supplyID, supplier
FROM dbo.SUPPLY1
UNION ALL
SELECT supplyID, supplier
FROM dbo.SUPPLY2
UNION ALL
SELECT supplyID, supplier
FROM dbo.SUPPLY3
UNION ALL
SELECT supplyID, supplier
FROM dbo.SUPPLY4;
GO
INSERT dbo.all_supplier_view VALUES ('1', 'CaliforniaCorp'), ('5', 'BraziliaLtd')
, ('231', 'FarEast'), ('280', 'NZ')
, ('321', 'EuroGroup'), ('442', 'UKArchip')
, ('475', 'India'), ('521', 'Afrique');
GO
Exemplos: Azure Synapse Analytics and Analytics Platform System (PDW)
F. Criar uma vista juntando duas tabelas
O exemplo a seguir cria um modo de exibição usando uma SELECT
instrução com um OUTER JOIN
arquivo . Os resultados da consulta de associação preenchem a exibição.
CREATE VIEW view1
AS
SELECT fis.CustomerKey, fis.ProductKey, fis.OrderDateKey,
fis.SalesTerritoryKey, dst.SalesTerritoryRegion
FROM FactInternetSales AS fis
LEFT OUTER JOIN DimSalesTerritory AS dst
ON (fis.SalesTerritoryKey=dst.SalesTerritoryKey);
Conteúdo relacionado
- ALTERAR TABELA (Transact-SQL)
- VISTA ALTER (Transact-SQL)
- APAGAR (Transact-SQL)
- VISTA DE GOTA (Transact-SQL)
- INSERIR (Transact-SQL)
- criar um procedimento armazenado
- sys.dm_sql_referenced_entities (Transact-SQL)
- sys.dm_sql_referencing_entities (Transact-SQL)
- sp_help (Transact-SQL)
- sp_helptext (Transact-SQL)
- sp_refreshview (Transact-SQL)
- sp_rename (Transact-SQL)
- sys.views (Transact-SQL)
- ATUALIZAÇÃO (Transact-SQL)
- EVENTDATA (Transact-SQL)