Postgres 是按 table 还是 db 进行约束?

Are Postgres constrains per table or db?

我可以有两个具有不同约束且名称相同的表吗 - 即:

Table A 约束 C

Table B 约束 C

约束不同

谢谢!

我没有找到它在 postgres 文档中提到的位置。这是对约束名称的确认,但在数据库中有所不同。

CREATE TABLE type_position(
   type_position INTEGER CONSTRAINT pk_type_position PRIMARY KEY,
   description VARCHAR( 64 )
);

CREATE TABLE type_position2(
   type_position INTEGER CONSTRAINT pk_type_position PRIMARY KEY,
   description VARCHAR( 64 )
);

我收到了消息

ERROR: relation "pk_type_position" already exists

我在文档中找不到任何合适的参考,但约束名称的唯一性似乎取决于约束的类型。

uniqueprimary key约束名必须是唯一的,不能在多个表中重复使用,但是checkforeign key约束名可以在多个表中使用(尽管出于显而易见的原因,这可能不是一个好主意)。

我猜测原因是 uniqueprimary key 约束创建索引,因此需要唯一命名。