第 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 特有视图。
注意
当在数据库中查询约束信息时,一个期望返回一行的标准兼容的查询可能返回多行。这是因为 SQL 标准要求约束名在一个模式中唯一,但是 PostgreSQL 并不强制这种限制。PostgreSQL 自动产生的约束名避免在相同的模式中重复,但是用户能够指定这种重复的名称。
这个问题可能在查询信息模式视图时出现,例如 check_constraint_routine_usage、check_constraints、domain_constraints 和
referential_constraints。一些其他视图也有相似的问题,但是它们包含了表名来帮助区分重复行,例如 constraint_column_usage、constraint_table_usage、table_constraints。
36.1. 模式 #
信息模式本身是一个名为 information_schema 的模式。这个模式自动存在于所有数据库中。这个模式的拥有者是集簇中的初始数据库用户,并且该用户自然地拥有这个模式上的所有权限,包括删除它的能力(但是这样节省的空间是很小的)。
默认情况下,信息模式不在模式搜索路径中,因此你需要使用限定名访问其中的所有对象。因为信息模式中的某些对象的名称是可能出现在用户应用中的一般名称,如果你想把该信息模式放在路径中,你应该小心。