簡體   English   中英

PostgreSQL約束和主鍵的名稱相同

[英]PostgreSQL same name for constraint and primary key

從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一樣重用索引的名稱?

如果要使用USING INDEX語法,則應在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;

db <> fiddle演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM