其他模式中的约束

Constraints in other schema

在试验 information_schema.* 视图时,我了解到可以在另一个模式中定义约束。这反映在 information_schema.table_constraints 视图中,它添加了诸如 constaint_schema 的列来表示:

select * from information_schema.table_constraints

constraint_catalog | constraint_schema | constraint_name | table_catalog | table_schema | table_name | constraint_type | is_deferrable | initially_deferred 

对于外键,这是有道理的:可以在另一个模式中引用 table。

我现在想知道这是否也适用于其他约束。也就是说,是否有可能在另一个模式中将主要约束、唯一约束或检查约束定义为定义 table 的模式? 在哪些情况下 constraint_schemainformation_schema.table_constraints 中的 table_schema 不同?

https://www.postgresql.org/docs/current/static/sql-createindex.html

the index is always created in the same schema as its parent table

https://www.postgresql.org/docs/current/static/ddl-constraints.html

Adding a unique constraint will automatically create a unique B-tree index on the column or group of columns listed in the constraint.

Adding a primary key will automatically create a unique B-tree index on the column or group of columns listed in the primary key

因此 pk 或 unique 肯定会在相同模式中与 table 一起旅行。关于 check and not null - 我想不出任何方法来争论为什么它们不能在不同的模式中,但我也看不出它们如何出现在不同模式中的任何原因......