我可以拥有两个名称相同的不同约束的表 - 即:
表A,约束C
表B,约束C
约束是不同的
谢谢!
答案 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)
我在文档中找不到任何合适的引用,但似乎约束名称的唯一性取决于约束的类型。
unique
和primary key
约束名称必须是唯一的,并且不能在多个表中重复使用,但check
和foreign key
约束名称可用于多个表中(尽管出于显而易见的原因,这可能是一个坏主意。)
我猜想原因是unique
和primary key
约束创建了索引,因此需要进行唯一命名。