目录
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_privilegesroutinesschematasequencessql_featuressql_implementation_infosql_languagessql_packagessql_partssql_sizingsql_sizing_profilestable_constraintstable_privilegestablestransformstriggered_update_columnstriggersudt_privilegesusage_privilegesuser_defined_typesuser_mapping_optionsuser_mappingsview_column_usageview_routine_usageview_table_usageviews信息模式由一组视图构成,它们包含定义在当前数据库中对象的信息。信息模式以 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。