约束和主键的PostgreSQL同名

时间:2019-05-23 16:36:51

标签: postgresql

从Oracle迁移我想重用一些定义,例如:

ALTER TABLE CLIENTUSERS
ADD CONSTRAINT UK_CLIENTUSERS_CLIENTUS UNIQUE (CLIENTID, USERID)
USING INDEX TABLESPACE IDX

但是,这失败了,因为子句using index缺少索引名称。问题是当我指定UK_CLIENTUSERS_CLIENTUS时失败,并显示[42P07] ERROR: relation "uk_clientusers_clientus" already exists

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

1 个答案:

答案 0 :(得分:2)

如果要使用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; 语句中省略列列表:

$(document).on('mousedown', function(){console.log('down: ', x++);});

db<>fiddle demo