在尝试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
对于外键,这是有意义的:可以引用另一个模式中的表。
我现在想知道这是否也适用于其他约束。也就是说,是否有可能在另一个模式中将主约束、唯一约束或检查约束定义为定义表的模式?
在哪些情况下
constraint_schema
将不同于table_schema
中的information_schema.table_constraints
? 最佳答案
https://www.postgresql.org/docs/current/static/sql-createindex.html
索引总是在与其父表相同的架构中创建的
https://www.postgresql.org/docs/current/static/ddl-constraints.html
添加唯一约束将自动创建唯一的B树
约束中列出的列或列组的索引。
和
添加主键将自动创建唯一的B树索引
在主键中列出的列或列组上
因此,pk或unique肯定会与表一起在同一模式中移动。关于check和not null,我想不出任何方法来解释为什么它们不能出现在不同的模式中,但是我也不知道它们为什么会出现在不同的模式中。。。
关于postgresql - 其他模式的约束,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50114722/