SHOW PRIMARY KEYS

指定されたテーブル、現在または指定のスキーマにあるすべてのテーブル、現在のデータベースまたは指定のデータベースにあるすべてのテーブル、または現在のアカウントにあるすべてのテーブルの主キーをリストします。

構文

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 を指定すると、コマンドは、指定されたデータベースのスキーマすべての記録を取得します。

  • db_name を指定しない場合は、次のようになります。

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

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

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

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

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

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

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

  • 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つの行が含まれます。

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

  • このコマンドの出力を後処理するには、 RESULT_SCAN 関数を使用できます。この関数は、出力をクエリ可能なテーブルとして扱います。

重要

Snowflakeは、主キー制約を NOT NULL 制約として扱うことに注意してください。Snowflakeは、主キーに一意の値を適用しません。

出力

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

説明

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