SHOW PRIMARY KEYS¶
列出一个或多个表的主键。您可以指定以下选项:
单个表
当前或指定架构中的所有表
当前或指定数据库中的所有表
当前账户中的所有表
语法¶
SHOW [ TERSE ] PRIMARY KEYS
[ IN { ACCOUNT | DATABASE [ <database_name> ] | SCHEMA [ <schema_name> ] | TABLE | [ TABLE ] <table_name> } ]
参数¶
TERSE
语法接受该子句,但对输出没有影响。
IN { ACCOUNT | DATABASE [ <database_name> ] | SCHEMA [ <schema_name> ] | TABLE | [ TABLE ] <table_name> }
指定命令的作用域,该作用域决定命令是仅列出当前的还是指定的数据库、架构、表或账户的记录。
如果您指定关键字
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
关键字,则:如果当前有数据库,那么:
如果当前存在架构,则该命令将检索当前数据库中当前架构的记录。
如果不存在当前架构,则该命令将检索当前数据库中所有架构的记录。
如果当前没有数据库,则该命令将检索账户中所有数据库和所有架构的记录。
如果指定了 :code:` <table_name> ` (带或不带
TABLE
关键字),则:如果指定了完全限定的 :code:` <table_name> ` (例如
my_database_name.my_schema_name.my_table_name
),则该命令将检索指定表的所有记录。如果指定了架构限定的 :code:` <table_name> ` (例如
my_schema_name.my_table_name
),则:如果当前数据库存在,该命令将检索指定表的所有记录。
如果当前数据库不存在,该命令将显示如下所示的错误: :code:` Cannot perform SHOW <object_type>.This session does not have a current database...`.
如果您指定了未限定的
<table_name>
,那么:
默认:取决于会话当前是否正在使用数据库:
数据库:
DATABASE
是默认值(即该命令返回您有权在数据库中查看的对象)。无数据库:
ACCOUNT
是默认值(即该命令返回您有权在账户中查看的对象)。
使用说明¶
该命令不需要正在运行的仓库即可执行。
对于每个单列主键,输出中都包含一行。
对于每个多列主键,输出中都包含与主键中的每列对应的一行。
如果一个账户(或数据库或架构)有大量表,则搜索整个账户(或表或架构)可能会使用大量的计算资源。
若要对此命令的输出进行后处理,可以使用 RESULT_SCAN 函数,该函数会将输出视为可查询的表。
重要
对于标准表,Snowflake不强制执行 PRIMARY KEY 约束;但是,对 混合表 强制执行。
输出¶
命令输出在以下列中提供主键属性和元数据:
列 |
描述 |
---|---|
|
创建表的日期和时间。 |
|
存储表的数据库。 |
|
存储表的架构。 |
|
表的名称。 |
|
主键中的列的名称。 |
|
如果主键由多个列组成,则 |
|
创建约束时为约束指定的注释(如果有)。 |
|
约束的名称。 |
示例¶
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;