SHOW PRIMARY KEYS

1つ以上のテーブルの主キーを一覧表示します。次のオプションを指定できます。

  • 単一テーブル

  • 現在のスキーマまたは指定されたスキーマのすべてのテーブル

  • 現在のデータベースまたは指定したデータベースのすべてのテーブル

  • 現在のアカウントの全テーブル

構文

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

パラメーター

TERSE

この句は構文的に受け入れられますが、出力には影響しません。

IN { ACCOUNT | DATABASE [ <データベース名> ] | SCHEMA [ <スキーマ名> ] | TABLE | [ TABLE ] <テーブル名> }

コマンドのスコープを指定します。コマンドのスコープは、コマンドが現在または指定のデータベース、スキーマ、テーブル、またはアカウントの記録のみをリストするかどうかを決定します。

キーワード ACCOUNT を指定すると、コマンドは、現在のアカウントのデータベースすべてにあるすべてのスキーマの記録を取得します。

キーワード DATABASE を指定すると、次のようになります。

  • db_name を指定すると、コマンドは、指定されたデータベースのスキーマすべての記録を取得します。

  • :samp:`{db_name}`を指定しない場合、以下のようになります:

    • 現在のデータベースがある場合、コマンドは、現在のデータベースにあるスキーマすべての記録を取得します。

    • 現在のデータベースがない場合、コマンドは、アカウントにあるすべてのデータベースとスキーマの記録を取得します。

キーワード SCHEMA を指定すると、次のようになります。

  • 修飾されたスキーマ名(例: my_database.my_schema)を指定すると、コマンドは、指定されたデータベースとスキーマの記録を取得します。

  • 修飾されていない schema_name を指定すると、次のようになります。

    • 現在のデータベースがある場合、コマンドは、現在のデータベースにある指定されたスキーマの記録を取得します。

    • 現在のデータベースがない場合、コマンドは、エラー SQL compilation error: Object does not exist, or operation cannot be performed を表示します。

  • :samp:`{schema_name}`を指定しない場合、以下のようになります:

    • 現在のデータベースがある場合は、次のようになります。

      • 現在のスキーマがある場合、コマンドは、現在のデータベースにある現在のスキーマの記録を取得します。

      • 現在のスキーマがない場合、コマンドは、現在のデータベースにあるスキーマすべての記録を取得します。

    • 現在のデータベースがない場合、コマンドは、アカウントにあるすべてのデータベースとすべてのスキーマの記録を取得します。

table_name なしでキーワード TABLE を指定すると、次のようになります。

  • 現在のデータベースがある場合は、次のようになります。

    • 現在のスキーマがある場合、コマンドは、現在のデータベースにある現在のスキーマの記録を取得します。

    • 現在のスキーマがない場合、コマンドは、現在のデータベースにあるスキーマすべての記録を取得します。

  • 現在のデータベースがない場合、コマンドは、アカウントにあるすべてのデータベースとすべてのスキーマの記録を取得します。

<テーブル名> (キーワード TABLE の有無にかかわらず)を指定すると、次のようになります。

  • 完全修飾された <テーブル名> (例: my_database_name.my_schema_name.my_table_name)を指定すると、コマンドは指定されたテーブルのすべての記録を取得します。

  • スキーマ修飾された <テーブル名> (例: my_schema_name.my_table_name)を指定すると、次のようになります。

    • 現在のデータベースが存在する場合、コマンドは、指定されたテーブルのすべての記録を取得します。

    • 現在のデータベースが存在しない場合、コマンドは Cannot perform SHOW <オブジェクト型>.This session does not have a current database... のようなエラーを表示します。

  • 修飾されていない <テーブル名> を指定すると、次のようになります。

    • 現在のデータベースと現在のスキーマが存在する場合、コマンドは、現在のデータベースにおける現在のスキーマで指定されたテーブルの記録を取得します。

    • 現在のデータベースが存在しないか、現在のスキーマが存在しない場合、コマンドは、 SQL compilation error: <オブジェクト> does not exist or not authorized. のようなエラーを表示します。

デフォルト: セッションで現在使用中のデータベースがあるかどうかによって異なります。

  • データベース: DATABASE がデフォルトです(つまり、コマンドはデータベースで表示する権限を持つオブジェクトを返します)。

  • データベースなし: ACCOUNT はデフォルトです(つまり、コマンドは、アカウントで表示する権限を持つオブジェクトを返します)。

使用上の注意

  • 単一列の各主キーに対して、出力には1つの行が含まれます。

  • 複数列の各主キーに対して、出力には主キーの列ごとに1つの行が含まれます。

  • アカウント(またはデータベースまたはスキーマ)に多数のテーブルがある場合、アカウント全体(またはテーブルまたはスキーマ)を検索すると、大量のコンピューティングリソースが消費される可能性があります。

  • このコマンドの実行には、稼働中のウェアハウスは必要ありません。

  • このコマンドは、現在のユーザーの現在のロールに少なくとも1つのアクセス権限が付与されているオブジェクトのみを返します。

  • MANAGE GRANTS アクセス権限により、所有者はアカウント内のすべてのオブジェクトを暗黙的に参照できます。デフォルトでは、アカウント管理者( ACCOUNTADMIN ロールを持つユーザー)とセキュリティ管理者( SECURITYADMIN ロールを持つユーザー)のみが MANAGE GRANTS 権限を持っています。

  • このコマンドの出力を後処理するには、 パイプ演算子->>)または RESULT_SCAN 関数。どちらのコンストラクトも、出力を クエリできる結果セットとして扱います。

    For example, you can use the pipe operator or RESULT_SCAN function to select specific columns from the SHOW command output or filter the rows.

    When you refer to the output columns, use double-quoted identifiers for the column names. For example, to select the output column type, specify SELECT "type".

    You must use double-quoted identifiers because the output column names for SHOW commands are in lowercase. The double quotes ensure that the column names in the SELECT list or WHERE clause match the column names in the SHOW command output that was scanned.

重要

標準テーブルでは、Snowflake は PRIMARY KEY 制約を強制しませんが、 ハイブリッドテーブル では強制されます。

出力

コマンド出力では、次の列に主キープロパティとメタデータが提供されます。

説明

created_on

テーブルが作成された日時。

database_name

テーブルが保存されているデータベース。

schema_name

テーブルが保存されているスキーマ。

table_name

テーブルの名前。

column_name

主キーの列の名前。

key_sequence

主キーが複数の列で構成されている場合、 key_sequence 列の番号は、主キーにあるそれらの列の順序を示します。たとえば、主キーが CONSTRAINT pkey1 PRIMARY KEY (column_x, column_y) として定義されている場合、 column_xkey_sequence 番号は1であり、 column_y のkey_sequence番号は2です。

comment

制約が作成されたときに制約に指定されたコメント(存在する場合)。

constraint_name

制約の名前。

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