Table of Contents
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 The information schema consists of a set of views that contain information about the objects defined in the current database. The information schema is defined in the SQL standard and can therefore be expected to be portable and remain stable — unlike the system catalogs, which are specific to PostgreSQL and are modeled after implementation concerns. The information schema views do not, however, contain information about PostgreSQL-specific features; to inquire about those you need to query the system catalogs or other PostgreSQL-specific views.
When querying the database for constraint information, it is possible for a standard-compliant query that expects to return one row to return several. This is because the SQL standard requires constraint names to be unique within a schema, but PostgreSQL does not enforce this restriction. PostgreSQL automatically-generated constraint names avoid duplicates in the same schema, but users can specify such duplicate names.
This problem can appear when querying information schema views such as check_constraint_routine_usage, check_constraints, domain_constraints, and referential_constraints. Some other views have similar issues but contain the table name to help distinguish duplicate rows, e.g., constraint_column_usage, constraint_table_usage, table_constraints.
If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.