DB2 SQL - Aliases and synonyms - www.cadcobol.com.br



Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

Aliases and synonyms

Uma table ou view pode ser referida em uma instrução SQL por seu nome, por um alias que foi definido para seu nome ou por um sinônimo que foi definido por seu nome.
Assim, aliases e sinônimos podem ser considerados como nomes alternativos para tabelas e visualizações.

Importante

Use aliases em vez de sinônimos.
Os sinônimos são semelhantes aos aliases, mas são suportados apenas para compatibilidade com versões anteriores.
Os aliases se comportam da mesma forma para a família de produtos DB2® .

Recomendação:

Ao escrever novas instruções SQL ou criar aplicativos portáteis, use aliases.
A IBM não possui planos atuais para remover o suporte a sinônimos do DB2 para z / OS ; no entanto, o uso de sinônimos é desencorajado.

Um alias pode ser definido em um servidor local e pode se referir a uma tabela ou exibição que esteja no servidor atual ou em um servidor remoto.
O nome alternativo pode ser usado sempre que o nome da tabela ou o nome da exibição puder ser usado para se referir à tabela ou exibição em uma instrução SQL.
As regras para formar um nome alternativo são as mesmas que para formar um nome de tabela ou nome de exibição, conforme explicado abaixo.
Um nome de alias completo (um nome de três partes) pode se referir a um alias em um servidor remoto.
No entanto, a tabela ou exibição identificada pelo alias no servidor remoto deve existir no servidor remoto.

Um nome alternativo designa um alternativo quando é precedido pela palavra-chave ALIAS, como em CREATE ALIAS, DROP ALIAS, COMMENT ON ALIAS e LABEL ON ALIAS.
Em todos os outros contextos, um nome alternativo designa uma tabela ou exibição.
Por exemplo, COMMENT ON ALIAS A especifica um comentário sobre o alias A, enquanto COMMENT ON TABLE A especifica um comentário sobre a tabela ou exibição designada por A.

Um sinônimo designa um sinônimo quando é precedido pela palavra-chave SYNONYM, como em CREATE SYNONYM e DROP SYNONYM.
Em todos os outros contextos, um sinônimo designa uma tabela ou exibição local e pode ser usado sempre que o nome de uma tabela ou exibição puder ser usado em uma instrução SQL.

Instruções que usam nomes de três partes e se referem a dados distribuídos resultam no acesso do DRDA ao site remoto.
O acesso DRDA para nomes de três partes é usado quando o plano ou pacote que contém a consulta aos dados distribuídos está associado à opção de ligação DBPROTOCOL (DRDA) ou o valor do campo DATABASE PROTOCOL no painel de instalação DSNTIP5 é DRDA.
Quando um programa aplicativo usa aliases de nome de três partes para objetos remotos e acesso a DRDA, o programa de aplicativo deve ser vinculado a cada local especificado nos nomes de três partes.
Além disso, cada alias precisa ser definido no site local. Um alias em um site remoto pode se referir a outro servidor, desde que um alias referenciado acabe se referindo a uma tabela ou exibição.
A opção de referenciar uma tabela ou exibição por um alias ou sinônimo não é mostrada explicitamente nos diagramas de sintaxe ou mencionada na descrição das instruções SQL.
Mas eles podem ser referidos em uma instrução SQL, com duas exceções: um alias local não pode ser usado na instrução CREATE ALIAS e um sinônimo não pode ser usado na instrução CREATE SYNONYM.
Se um alias for usado na instrução CREATE SYNONYM, ele deverá identificar uma tabela ou exibição no servidor atual.
O sinônimo é definido no nome dessa tabela ou exibição.
Se um sinônimo for usado na instrução CREATE ALIAS, o alias será definido no nome da tabela ou na visualização identificada pelo sinônimo.

O efeito do uso de um alias ou sinônimo em uma instrução SQL é o da substituição de texto.
Por exemplo, se A for um apelido para a tabela QT, uma das etapas envolvidas na preparação de SELECT * DE A é a substituição de 'A' por 'Q.T'.
Da mesma forma, se S é sinônimo de QT, uma das etapas envolvidas na preparação de SELECT * DE S é a substituição de 'S' por 'Q.T'.

As diferenças entre aliases e sinônimos são as seguintes:

  • A autorização ou o privilégio CREATE ALIAS é necessário para definir um alias.
    Nenhuma autorização é necessária para definir um sinônimo.

  • Um alias pode ser definido no nome de uma tabela ou exibição, incluindo tabelas e exibições que não estão no servidor atual.
    Um sinônimo pode ser definido apenas no nome de uma tabela ou visualização no servidor atual.

  • Um alias pode ser definido em um nome indefinido.
    Um sinônimo pode ser definido apenas no nome de uma tabela ou view existente.

  • Excluir uma tabela ou view não afeta seus aliases.
    Mas excluir uma tabela ou view elimina seus sinônimos.

  • Um alias é um nome qualificado que pode ser usado por qualquer ID de autorização.
    Um novo alias não pode ter o mesmo nome completo que um alias, tabela ou exibição existente, e um novo nome de alias não qualificado não pode ter o mesmo nome que um sinônimo existente.

  • Um sinônimo é um nome não qualificado que só pode ser usado pelo proprietário do sinônimo.
    Um novo sinônimo não pode ter o mesmo nome que um sinônimo existente ou o nome não qualificado de um alias, tabela ou exibição existente.

  • Um alias definido em um subsistema DB2 pode ser usado em outro subsistema DB2 .
    Um sinônimo pode ser usado apenas no subsistema DB2 em que está definido.

  • Quando um alias é usado, ocorre um erro se o nome designado não for definido ou o nome de um alias no servidor atual.
    (O alias pode representar outro alias em um servidor diferente, o que pode representar outro alias em outro servidor, desde que um alias referenciado represente uma tabela ou exibição.)
    Quando um sinônimo é usado, esse erro não pode ocorrer.

  • Um sinônimo não pode ser criado em um contexto confiável que tenha ROLE AS OBJECT OWNER em vigor.