选择 打开 改范围 完整检索页
受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10
当前 PostgreSQL 版本不在支持生命周期内。
您可以参阅当前版本的对应页面,或其他在上面列出的活跃大版本。

Chapter 36. 信息模式

目录

36.1. 模式
36.2. 数据类型
36.3. information_schema_catalog_name
36.4. administrable_role_authorizations
36.5. applicable_roles
36.6. attributes
36.7. character_sets
36.8. check_constraint_routine_usage
36.9. check_constraints
36.10. collations
36.11. collation_character_set_applicability
36.12. column_column_usage
36.13. column_domain_usage
36.14. column_options
36.15. column_privileges
36.16. column_udt_usage
36.17. columns
36.18. constraint_column_usage
36.19. constraint_table_usage
36.20. data_type_privileges
36.21. domain_constraints
36.22. domain_udt_usage
36.23. domains
36.24. element_types
36.25. enabled_roles
36.26. foreign_data_wrapper_options
36.27. foreign_data_wrappers
36.28. foreign_server_options
36.29. foreign_servers
36.30. foreign_table_options
36.31. foreign_tables
36.32. key_column_usage
36.33. parameters
36.34. referential_constraints
36.35. role_column_grants
36.36. role_routine_grants
36.37. role_table_grants
36.38. role_udt_grants
36.39. role_usage_grants
36.40. routine_privileges
36.41. routines
36.42. schemata
36.43. sequences
36.44. sql_features
36.45. sql_implementation_info
36.46. sql_languages
36.47. sql_packages
36.48. sql_parts
36.49. sql_sizing
36.50. sql_sizing_profiles
36.51. table_constraints
36.52. table_privileges
36.53. tables
36.54. transforms
36.55. triggered_update_columns
36.56. triggers
36.57. udt_privileges
36.58. usage_privileges
36.59. user_defined_types
36.60. user_mapping_options
36.61. user_mappings
36.62. view_column_usage
36.63. view_routine_usage
36.64. view_table_usage
36.65. views

信息模式由一组视图组成,其中包含当前数据库中定义的对象的信息。信息模式由 SQL 标准定义,因此可以预期它具有可移植性并保持稳定;而系统目录则不同,它们是 PostgreSQL 特有的,并且是围绕实现方面的考虑建模的。不过,信息模式视图不包含 PostgreSQL 特有功能的信息;要查询这些信息,需要查询系统目录或其他 PostgreSQL 特有视图。

Note

当在数据库中查询约束信息时,一个期望返回一行的标准兼容的查询可能返回多行。这是因为 SQL 标准要求约束名在一个模式中唯一,但是PostgreSQL并不强制这种限制。PostgreSQL自动产生的约束名避免在相同的模式中重复,但是用户能够指定这种重复的名称。

这个问题可能在查询信息模式视图时出现,例如check_constraint_routine_usagecheck_constraintsdomain_constraintsreferential_constraints。一些其他视图也有相似的问题,但是它们包含了表名来帮助区分重复行,例如constraint_column_usageconstraint_table_usagetable_constraints

36.1. 模式 #

信息模式本身是一个名为information_schema的模式。这个模式自动存在于所有数据库中。这个模式的拥有者是集簇中的初始数据库用户,并且该用户自然地拥有这个模式上的所有权限,包括删除它的能力(但是这样节省的空间是很小的)。

默认情况下,信息模式不在模式搜索路径中,因此你需要使用限定名访问其中的所有对象。因为信息模式中的某些对象的名称是可能出现在用户应用中的一般名称,如果你想把该信息模式放在路径中,你应该小心。