目录
information_schema_catalog_name
administrable_role_authorizations
applicable_roles
attributes
character_sets
check_constraint_routine_usage
check_constraints
collations
collation_character_set_applicability
column_column_usage
column_domain_usage
column_options
column_privileges
column_udt_usage
columns
constraint_column_usage
constraint_table_usage
data_type_privileges
domain_constraints
domain_udt_usage
domains
element_types
enabled_roles
foreign_data_wrapper_options
foreign_data_wrappers
foreign_server_options
foreign_servers
foreign_table_options
foreign_tables
key_column_usage
parameters
referential_constraints
role_column_grants
role_routine_grants
role_table_grants
role_udt_grants
role_usage_grants
routine_column_usage
routine_privileges
routine_routine_usage
routine_sequence_usage
routine_table_usage
routines
schemata
sequences
sql_features
sql_implementation_info
sql_parts
sql_sizing
table_constraints
table_privileges
tables
transforms
triggered_update_columns
triggers
udt_privileges
usage_privileges
user_defined_types
user_mapping_options
user_mappings
view_column_usage
view_routine_usage
view_table_usage
views
信息模式是由几个视图组成的,其中包含有关当前数据库中定义的对象的信息。该信息模式在 SQL 标准中进行定义,因此可以预期具有可移植性和保持稳定,与系统编录不同,后者特定于 PostgreSQL,并仿照实现问题进行建模。然而,信息模式视图不包含 PostgreSQL 特有的信息;要查询这些信息,您需要查询系统编录或其他 PostgreSQL 特定的视图。
在查询数据库以获取约束信息时,可能会出现符合标准的查询,它期望返回一行却返回多行的情况。这是因为 SQL 标准要求约束名称在模式内必须唯一,但 PostgreSQL 不会强制实施此限制。PostgreSQL 自动生成的约束名称可避免在同一模式中出现重复项,但用户可以指定此类重复名称。
在查询信息模式视图(例如 check_constraint_routine_usage
、check_constraints
、domain_constraints
和 referential_constraints
)时可能会出现此问题。一些其他视图有类似的问题,但包含表名称以帮助区分重复行,例如 constraint_column_usage
、constraint_table_usage
、table_constraints
。