我可以有两个具有不同约束但名称相同的表-即:
带约束C的表A
带约束C的表B
约束是不同的
谢谢!
我在文档中找不到任何合适的参考,但似乎约束名称的唯一性取决于约束的类型。
unique
和primary key
约束名称必须是唯一的,并且不能在多个表中重用,但是check
和foreign key
约束名称可以在多个表中使用(尽管这可能是一个坏主意,原因很明显)。
我猜原因是unique
和primary key
约束创建索引,因此需要唯一命名。
我没有找到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 )
);
And I got the message
错误:关系"pk_type_position"已经存在