SHOW PRIMARY KEYS

Lista chaves primárias para a tabela especificada, ou para todas as tabelas no esquema atual ou especificado, ou para todas as tabelas no banco de dados atual ou especificado, ou para todas as tabelas na conta atual.

Sintaxe

SHOW [ TERSE ] PRIMARY KEYS
    [ IN { ACCOUNT | DATABASE [ <database_name> ] | SCHEMA [ <schema_name> ] | TABLE | [ TABLE ] <table_name> } ]
Copy

Parâmetros

TERSE

Esta cláusula é aceita sintaticamente, mas não tem efeito sobre a produção.

IN { ACCOUNT | DATABASE [ <database_name> ] | SCHEMA [ <schema_name> ] | TABLE | [ TABLE ] <table_name> }

Especifica o escopo do comandos que determina se o comando lista registros apenas para o banco de dados, esquema, tabela ou conta atual ou especificado.

Se você especificar a palavra-chave ACCOUNT, então o comando recuperará os registros de todos os esquemas em todos os bancos de dados da conta atual.

Se você especificar a palavra-chave DATABASE, então:

  • Se você especificar um db_name, então o comando recupera registros para todos os esquemas do banco de dados especificado.

  • Se você não especificar um db_name, então:

    • Se houver um banco de dados atual, então o comando recuperará os registros de todos os esquemas do banco de dados atual.

    • Se não houver um banco de dados atual, então o comando recuperará registros para todos os bancos de dados e esquemas da conta.

Se você especificar a palavra-chave SCHEMA, então:

  • Se você especificar um nome de esquema qualificado (por exemplo, my_database.my_schema), então o comando recuperará registros para o banco de dados e esquema especificado.

  • Se você especificar um schema_name não qualificado, então:

    • Se houver um banco de dados atual, então o comando recupera os registros para o esquema especificado no banco de dados atual.

    • Se não houver um banco de dados atual, então o comando exibe o erro SQL compilation error: Object does not exist, or operation cannot be performed.

  • Se você não especificar um schema_name, então:

    • Se houver um banco de dados atual, então:

      • Se houver um esquema atual, então o comando recupera registros para o esquema atual no banco de dados atual.

      • Se não houver um esquema atual, então o comando recupera os registros de todos os esquemas no banco de dados atual.

    • Se não houver um banco de dados atual, então o comando recupera os registros de todos os bancos de dados e todos os esquemas da conta.

Se você especificar a palavra-chave TABLE sem um table_name, então:

  • Se houver um banco de dados atual, então:

    • Se houver um esquema atual, então o comando recupera registros para o esquema atual no banco de dados atual.

    • Se não houver um esquema atual, então o comando recupera os registros de todos os esquemas no banco de dados atual.

  • Se não houver um banco de dados atual, então o comando recupera os registros de todos os bancos de dados e todos os esquemas da conta.

Se você especificar um <nome_tabela> (com ou sem a palavra-chave TABLE), então:

  • Se você especificar um <nome_tabela> totalmente qualificado (por exemplo, my_database_name.my_schema_name.my_table_name), então o comando recuperará todos os registros para a tabela especificada.

  • Se você especificar um esquema qualificado <nome_tabela> (por exemplo, my_schema_name.my_table_name), então:

    • Se houver um banco de dados atual, o comando recupera todos os registros da tabela especificada.

    • Se não existir um banco de dados atual, então o comando exibe um erro semelhante a Cannot perform SHOW <tipo_objeto>. This session does not have a current database....

  • Se você especificar um <nome_tabela não qualificado>, então:

    • Se houver um banco de dados atual e um esquema atual, então o comando recupera os registros para a tabela especificada no esquema atual do banco de dados atual.

    • Se não existir um banco de dados atual ou se não existir um esquema atual, então o comando exibirá um erro semelhante a: SQL compilation error: <objeto> does not exist or not authorized..

Padrão: depende se a sessão tem ou não um banco de dados em uso no momento:

  • Banco de dados: DATABASE é o padrão (ou seja, o comando retorna os objetos nos quais você tem privilégios para visualizar no banco de dados).

  • Sem banco de dados: ACCOUNT é o padrão (ou seja, o comando retorna os objetos que você tem privilégios de visualização em sua conta).

Notas de uso

  • O comando não precisa de um warehouse em funcionamento para ser executado.

  • Para cada chave primária de uma coluna, a saída terá uma linha.

  • Para cada chave primária multicoluna, a saída terá uma linha para cada coluna na chave primária.

  • Se uma conta (ou banco de dados ou esquema) tiver um grande número de tabelas, então a busca de toda a conta (ou tabela ou esquema) pode consumir uma quantidade significativa de recursos de computação.

  • Para pós-processar a saída deste comando, você pode usar a função RESULT_SCAN, que trata a saída como uma tabela que pode ser consultada.

Importante

Lembre-se de que o Snowflake trata as principais restrições de chave como restrições NOT NULL. O Snowflake não impõe valores únicos para chaves primárias.

Saída

A saída do comando fornece as propriedades e metadados da chave primária nas seguintes colunas:

Coluna

Descrição

created_on

Data e hora de criação da tabela.

database_name

Banco de dados na qual a tabela é armazenada.

schema_name

Esquema no qual a tabela é armazenada.

table_name

Nome da tabela.

column_name

Nome da coluna na chave primária.

key_sequence

Se a chave primária for composta de várias colunas, então o número na coluna key_sequence indicará a ordem dessas colunas na chave primária. Por exemplo, se a chave primária for definida como CONSTRAINT pkey1 PRIMARY KEY (column_x, column_y), então o número key_sequence para column_x será 1 e o número de chave_sequência para column_y será 2.

comment

O comentário (se houver) especificado para a restrição quando a restrição foi criada.

constraint_name

O nome da restrição.

Exemplos

show primary keys;

show primary keys in account;

show primary keys in database;

show primary keys in database my_database;

show primary keys in schema;

show primary keys in schema my_schema;

show primary keys in schema my_database.my_schema;

show primary keys in my_table;

show primary keys in my_database.my_schema.my_table;
Copy