Postgres是否限制每个表或数据库?

时间:2015-08-26 12:38:12

标签: postgresql constraints psql

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

表A,约束C

表B,约束C

约束是不同的

谢谢!

2 个答案:

答案 0 :(得分:3)

我没有找到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 )
);

我收到了消息

  

错误:关系“pk_type_position”已经存在

答案 1 :(得分:3)

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

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

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