目录
information_schema_catalog_nameadministrable_role_authorizationsapplicable_rolesattributescharacter_setscheck_constraint_routine_usagecheck_constraintscollationscollation_character_set_applicabilitycolumn_column_usagecolumn_domain_usagecolumn_optionscolumn_privilegescolumn_udt_usagecolumnsconstraint_column_usageconstraint_table_usagedata_type_privilegesdomain_constraintsdomain_udt_usagedomainselement_typesenabled_rolesforeign_data_wrapper_optionsforeign_data_wrappersforeign_server_optionsforeign_serversforeign_table_optionsforeign_tableskey_column_usageparametersreferential_constraintsrole_column_grantsrole_routine_grantsrole_table_grantsrole_udt_grantsrole_usage_grantsroutine_column_usageroutine_privilegesroutine_routine_usageroutine_sequence_usageroutine_table_usageroutinesschematasequencessql_featuressql_implementation_infosql_partssql_sizingtable_constraintstable_privilegestablestransformstriggered_update_columnstriggersudt_privilegesusage_privilegesuser_defined_typesuser_mapping_optionsuser_mappingsview_column_usageview_routine_usageview_table_usageviews信息模式由一组视图组成,这些视图包含有关当前数据库中定义的对象的 18 信息。信息模式在 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。