ALTER JOIN POLICY¶
Substitui as regras ou comentários existentes para uma política de junção. Também permite que você renomeie uma política de junção.
- Consulte também:
Sintaxe¶
ALTER JOIN POLICY [ IF EXISTS ] <name> RENAME TO <new_name>
ALTER JOIN POLICY [ IF EXISTS ] <name> SET BODY -> <expression>
ALTER JOIN POLICY <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
ALTER JOIN POLICY <name> UNSET TAG <tag_name> [ , <tag_name> ... ]
ALTER JOIN POLICY [ IF EXISTS ] <name> SET COMMENT = '<string_literal>'
ALTER JOIN POLICY [ IF EXISTS ] <name> UNSET COMMENT
Parâmetros¶
name
Especifica o identificador da política de junçã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.
Para obter mais informações, consulte Requisitos para identificadores.
RENAME TO new_name
Especifica o novo identificador da política de junção; deve ser exclusivo para seu esquema. O novo identificador não pode ser usado se o identificador já estiver em vigor para uma política de junção diferente.
Para obter mais informações, 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.
SET ...
Especifica uma (ou mais) propriedades a serem definidas para a política de junção:
BODY -> expression
Expressão SQL que determina as restrições de uma política de junção.
Para definir o corpo da política de junção, chame a função JOIN_CONSTRAINT, que retorna TRUE ou FALSE. Quando a função retorna TRUE, as consultas precisam usar uma junção para retornar os resultados.
A sintaxe da função JOIN_CONSTRAINT é:
JOIN_CONSTRAINT ( { JOIN_REQUIRED => <boolean_expression> } )
Onde:
JOIN_REQUIRED => boolean_expression
Especifica se uma junção é necessária em consultas quando os dados são selecionados de tabelas ou exibições que têm a política de junção atribuída a elas.
O corpo de uma política não pode fazer referência a funções, tabelas ou exibições definidas pelo usuário.
As colunas de junção permitidas são especificadas na instrução CREATE ou ALTER para a tabela ou exibição à qual a política é aplicada, e não na instrução CREATE JOIN POLICY.
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 informações 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 o comentário existente para a política de junção.
Padrão: sem valor
UNSET ...
Especifica uma ou mais propriedades e/ou parâmetros a serem desinstalados, redefinindo-os para seus padrões, para a política de junção:
TAG tag_name [ , tag_name ... ]
COMMENT
Ao redefinir uma propriedade/parâmetro, especificar somente o nome; especificar um valor para a propriedade retornará um erro.
Requisitos de controle de acesso¶
A função usada para executar essa operação deve ter, no mínimo, os seguintes privilégios:
Privilégio |
Objeto |
Notas |
---|---|---|
OWNERSHIP |
Política de junção |
OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege). |
O privilégio USAGE no banco de dados e no esquema pai é necessário para executar operações em qualquer objeto de um esquema.
Para instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas.
Para informações gerais sobre concessões de funções e privilégios para executar ações de SQL em objetos protegíveis, consulte Visão geral do controle de acesso.
Para obter mais informações sobre a DDL da política de junção e os privilégios, consulte Privilégios e comandos.
Notas de uso¶
Se quiser atualizar uma política de junção existente e precisar ver o corpo atual da política, execute o comando DESCRIBE JOIN POLICY. Você também pode usar a função GET_DDL para obter a definição completa da política de junção, inclusive seu corpo.
É proibido mover uma política de junção para um esquema de acesso gerenciado (usando a sintaxe ALTER JOIN POLICY … RENAME TO) a menos que o proprietário da política de junção (ou seja, a função que tem o privilégio OWNERSHIP na política de junção) também seja proprietário do esquema de destino.
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¶
Modifique a expressão SQL para uma política de junção:
ALTER JOIN POLICY jp3 SET BODY -> JOIN_CONSTRAINT(JOIN_REQUIRED => FALSE);
Renomeie uma política de junção:
ALTER JOIN POLICY my_join_policy RENAME TO my_join_policy_2;