约束和主键的PostgreSQL名称相同

约束和主键的PostgreSQL名称相同,postgresql,Postgresql,从Oracle迁移我希望重用一些定义,如: ALTER TABLE CLIENTUSERS ADD CONSTRAINT UK_CLIENTUSERS_CLIENTUS UNIQUE (CLIENTID, USERID) USING INDEX TABLESPACE IDX 但是,这会失败,因为使用索引的子句缺少索引名。问题是,当我指定UK\u CLIENTUSERS\u CLIENTUS时失败,出现[42P07]错误:关系“UK\u CLIENTUSERS\u CLIENTUS”已经存在 我

从Oracle迁移我希望重用一些定义,如:

ALTER TABLE CLIENTUSERS
ADD CONSTRAINT UK_CLIENTUSERS_CLIENTUS UNIQUE (CLIENTID, USERID)
USING INDEX TABLESPACE IDX
但是,这会失败,因为使用索引的子句
缺少索引名。问题是,当我指定
UK\u CLIENTUSERS\u CLIENTUS
时失败,出现
[42P07]错误:关系“UK\u CLIENTUSERS\u CLIENTUS”已经存在


我是否需要为约束生成另一个名称,或者是否可以像oracle那样重用索引的名称?

如果要使用
使用索引
语法,应在
ALTER TABLE
语句中省略列列表:

CREATE TABLE CLIENTUSERS(CLIENTID INT, USERID INT);

CREATE UNIQUE INDEX UK_CLIENTUSERS_CLIENTUS ON CLIENTUSERS(CLIENTID, USERID);

ALTER TABLE CLIENTUSERS
ADD CONSTRAINT UK_CLIENTUSERS_CLIENTUS UNIQUE -- here columns were removed
USING INDEX UK_CLIENTUSERS_CLIENTUS;

如果要使用
使用索引
语法,应省略
ALTER TABLE
语句中的列列表:

CREATE TABLE CLIENTUSERS(CLIENTID INT, USERID INT);

CREATE UNIQUE INDEX UK_CLIENTUSERS_CLIENTUS ON CLIENTUSERS(CLIENTID, USERID);

ALTER TABLE CLIENTUSERS
ADD CONSTRAINT UK_CLIENTUSERS_CLIENTUS UNIQUE -- here columns were removed
USING INDEX UK_CLIENTUSERS_CLIENTUS;