ALTER VIEW¶
Modifica as propriedades para uma exibição existente. Atualmente, as únicas operações com suporte são:
Renomeação de uma exibição.
Conversão para (ou revertendo de) uma exibição segura.
Adição, substituição, remoção de comentário para uma exibição.
Note que você não pode usar este comando para mudar a definição de uma exibição. Para mudar a definição da exibição, você deve descartar a visualização e depois recriá-la.
- Consulte também:
Sintaxe¶
ALTER VIEW [ IF EXISTS ] <name> RENAME TO <new_name>
ALTER VIEW [ IF EXISTS ] <name> SET COMMENT = '<string_literal>'
ALTER VIEW [ IF EXISTS ] <name> UNSET COMMENT
ALTER VIEW <name> SET SECURE
ALTER VIEW <name> SET CHANGE_TRACKING = { TRUE | FALSE }
ALTER VIEW <name> UNSET SECURE
ALTER VIEW [ IF EXISTS ] <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
ALTER VIEW [ IF EXISTS ] <name> UNSET TAG <tag_name> [ , <tag_name> ... ]
ALTER VIEW [ IF EXISTS ] <name>
ADD ROW ACCESS POLICY <policy_name> ON (<col_name> [ , ... ])
ALTER VIEW [ IF EXISTS ] <name>
DROP ROW ACCESS POLICY <policy_name>
ALTER VIEW [ IF EXISTS ] <name>
DROP ROW ACCESS POLICY <policy_name>
, ADD ROW ACCESS POLICY <policy_name> ON (<col_name> [ , ... ])
ALTER VIEW [ IF EXISTS ] <name> DROP ALL ROW ACCESS POLICIES
ALTER VIEW <name> { ALTER | MODIFY } [ COLUMN ] <col_name> SET MASKING POLICY <policy_name> [ USING ( <col_name> , cond_col_1 , ... ) ]
[ FORCE ]
ALTER VIEW <name> { ALTER | MODIFY } [ COLUMN ] <col_name> UNSET MASKING POLICY
ALTER VIEW <name> { ALTER | MODIFY } [ COLUMN ] <col_name> SET TAG <tag_name> = '<string_literal>' [ , <tag_name> = '<string_literal>' ... ]
ALTER VIEW <name> { ALTER | MODIFY } COLUMN <col_name> UNSET TAG <tag_name> [ , <tag_name> ... ]
Parâmetros¶
name
Especifica o identificador da visualização a ser alterada. Se o identificador contiver espaços ou caracteres especiais, toda a cadeia de caracteres deverá ser delimitada por aspas duplas. Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.
RENAME TO new_name
Especifica o novo identificador da visualização; deve ser único para o esquema.
Para obter mais detalhes, consulte Requisitos para identificadores.
Você pode mover o objeto para um banco de dados e/ou esquema diferente enquanto opcionalmente renomeia o objeto. Para isso, especifique um valor qualificado
new_name
que inclua o novo banco de dados e/ou nome do esquema no formuláriodb_name.schema_name.object_name
ouschema_name.object_name
, respectivamente.Nota
O banco de dados e/ou esquema de destino já deve existir. Além disso, um objeto com o mesmo nome não pode já existir no banco de dados de destino; caso contrário, a instrução retorna um erro.
É proibido mover um objeto para um esquema de acesso gerenciado a menos que o proprietário do objeto (ou seja, a função que tem o privilégio OWNERSHIP sobre o objeto) também possua o esquema de destino.
Quando um objeto é renomeado, outros objetos que fazem referência a ele devem ser atualizados com o novo nome.
SET ...
Especifica a propriedade a ser definida para a exibição:
SECURE
Especifica uma visualização como segura.
CHANGE_TRACKING = TRUE | FALSE
Especifica a habilitação ou desabilitação do rastreamento de alterações na tabela.
TRUE
habilita o rastreamento de alterações na exibição, e faz o ajuste em cascata em todas as tabelas subjacentes.FALSE
desabilita o rastreamento de alterações na exibição, e faz o ajuste em cascata em todas as tabelas subjacentes.
TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]
Especifica o nome da tag e o valor da cadeia de caracteres dela.
O valor de tag é sempre uma cadeia de caracteres, e o número máximo de caracteres do valor da tag é 256.
Para obter mais detalhes sobre como especificar tags em uma instrução, consulte Cotas de tags para objetos e colunas.
COMMENT = 'string_literal'
Adiciona um comentário ou substitui um comentário existente para a exibição.
Nota
Você deve definir cada propriedade da visualização individualmente.
UNSET ...
Especifica a propriedade a ser removida para a exibição, o que a restaura para os padrões.
SECURE
TAG tag_name = 'tag_value' [, TAG tag_name = 'tag_value' ... ]
COMMENT
Ao redefinir uma propriedade/parâmetro, especificar somente o nome; especificar um valor para a propriedade retornará um erro.
Nota
Você deve reinicializar cada propriedade de visualização individualmente.
policy_name
Identificador para a política de acesso a linhas; deve ser único para seu esquema.
ADD ROW ACCESS POLICY <policy_name> ON (<col_name> [ , … ])
Adiciona uma política de acesso a linhas a uma visualização.
Pelo menos um nome de coluna deve ser especificado. Colunas adicionais podem ser especificadas com uma vírgula que separa cada nome de coluna.
DROP ROW ACCESS POLICY <policy_name>
Descarta uma política de acesso a linhas de uma visualização.
DROP ALL ROW ACCESS POLICIES
Descarta todas as associações de política de acesso a linhas a partir de uma exibição.
Esta expressão é útil quando uma política de acesso a linhas é descartada de um esquema antes de descartar a política de uma exibição.
ALTER | MODIFY <col_name> SET MASKING POLICY <policy_name>
Aplica uma política de mascaramento a uma coluna de exibição.
USING ( col_name , cond_col_1 ... )
Especifica os argumentos para passar para a expressão SQL da política de mascaramento condicional.
A primeira coluna da lista especifica a coluna das condições da política para mascarar ou tokenizar os dados e deve corresponder à coluna para a qual a política de mascaramento é definida.
As colunas adicionais especificam as colunas a serem avaliadas para determinar se os dados em cada linha do resultado da consulta devem ser mascarados ou tokenizados quando uma consulta é feita na primeira coluna.
Se a cláusula USING for omitida, o Snowflake tratará a política de mascaramento condicional como uma política de mascaramento normal.
FORCE
Substitui uma política de mascaramento que está atualmente definida em uma coluna por uma política de mascaramento diferente em uma única instrução.
Observe que a utilização da palavra-chave
FORCE
exige o tipo de dados da política na instrução ALTER VIEW (isto é, STRING) para corresponder ao tipo de dados da política de mascaramento atualmente definida na coluna (isto é, STRING).Se uma política de mascaramento não estiver definida atualmente na coluna, a especificação dessa palavra-chave não tem efeito.
Para obter mais detalhes, consulte Substituição de uma política de mascaramento em uma coluna.
ALTER | MODIFY <col_name> UNSET MASKING POLICY
Remove uma política de mascaramento de segurança em nível de coluna de uma coluna da exibição.
Notas de uso¶
É proibido mover uma exibição para um esquema de acesso gerenciado (usando a sintaxe ALTER VIEW … RENAME TO), a menos que o proprietário da exibição (ou seja, a função que tem o privilégio OWNERSHIP na exibição) também seja o proprietário do esquema de destino.
Para políticas de mascaramento:
A cláusula
USING
e a palavra-chaveFORCE
são ambas opcionais; nenhuma delas é necessária para definir uma política de mascaramento em uma coluna. A cláusulaUSING
e a palavra-chaveFORCE
podem ser usadas separadamente ou em conjunto. Para obter mais detalhes, consulte:Uma única política de mascaramento que utilize colunas condicionais pode ser aplicada a várias tabelas, desde que a estrutura de colunas da tabela corresponda às colunas especificadas na política.
Ao modificar uma ou mais colunas da tabela com uma política de mascaramento ou a própria tabela com uma política de acesso a linhas, use a função POLICY_CONTEXT para simular uma consulta na(s) coluna(s) protegida(s) por uma política de mascaramento e na tabela protegida por uma política de acesso a linhas.
Uma única política de mascaramento que utilize colunas condicionais pode ser aplicada a várias exibições, desde que a estrutura de colunas da exibição corresponda às colunas especificadas na política.
Para políticas de acesso a linhas:
O Snowflake oferece suporte à adição e ao descarte de políticas de acesso a linhas em uma única instrução SQL.
Por exemplo, para substituir uma política de acesso a linhas que já esteja definida em uma tabela por uma política diferente, primeiro descarte a política de acesso a linhas e depois adicione a nova política.
Para determinado recurso (ou seja, tabela ou exibição), para
ADD
ouDROP
uma política de acesso a linhas, você deve ter o privilégio APPLY ROW ACCESS POLICY no esquema, ou o privilégio OWNERSHIP no recurso e o privilégio APPLY no recurso da política de acesso a linhas.Uma tabela ou exibição só pode ser protegida por uma política de acesso a linhas de cada vez. A adição de uma política falhará se o corpo da política se referir a uma coluna de exibição ou tabela protegida por uma política de acesso a linhas ou à coluna protegida por uma política de mascaramento.
Da mesma forma, a adição de uma política de mascaramento a uma coluna da tabela falhará se o corpo da política de mascaramento se referir a uma tabela protegida por uma política de acesso a linhas ou outra política de mascaramento.
As políticas de acesso a linhas não podem ser aplicadas a exibições do sistema ou funções de tabela.
Semelhante a outras operações DROP <objeto>, o Snowflake retornará um erro se tentar descartar uma política de acesso a linhas de um recurso que não tenha uma política de acesso a linhas adicionada a ele.
Se um objeto tiver uma política de acesso a linhas e uma ou mais políticas de mascaramento, a política de acesso a linhas será avaliada primeiro.
Em relação aos metadados:
Atenção
Os clientes devem garantir que nenhum dado pessoal (exceto para um objeto do usuário), dados sensíveis, dados controlados por exportação ou outros dados regulamentados sejam inseridos como metadados ao usar o serviço Snowflake. Para obter mais informações, consulte Campos de metadados no Snowflake.
Exemplos¶
Renomear a exibição view1
como view2
:
ALTER VIEW view1 RENAME TO view2;
Converter uma exibição em uma exibição segura:
ALTER VIEW view1 SET SECURE;
Reverter uma exibição segura para uma exibição regular:
ALTER VIEW view1 UNSET SECURE;
Aplicar uma política de mascaramento de segurança em nível de coluna a uma coluna de exibição:
-- single column ALTER VIEW user_info_v MODIFY COLUMN ssn_number SET MASKING POLICY ssn_mask_v; -- multiple columns ALTER VIEW user_info_v MODIFY COLUMN ssn_number SET MASKING POLICY ssn_mask_v , COLUMN dob SET MASKING POLICY dob_mask_v ;
Remover uma política de mascaramento de segurança em nível de coluna de uma coluna da exibição:
-- single column ALTER VIEW user_info_v modify column ssn_number unset masking policy; -- multiple columns ALTER VIEW user_info_v modify column ssn_number unset masking policy , column dob unset masking policy ;
O exemplo seguinte adiciona uma política de acesso a linhas a uma exibição. Após definir as políticas, você pode verificar checando o esquema de informação.
alter view v1 add row access policy rap_v1 on (empl_id);
O exemplo a seguir descarta uma política de acesso a linhas de uma visualização. Verifique se as políticas foram descartadas consultando o esquema de informação.
alter view v1 drop row access policy rap_v1;
O exemplo a seguir mostra como combinar a adição e a eliminação de políticas de acesso a linhas em uma única instrução SQL para uma exibição. Verifique os resultados conferindo o esquema de informação.
alter view v1 drop row access policy rap_v1_version_1, add row access policy rap_v1_version_2 on (empl_id);