gpt4 book ai didi

约束和主键的 PostgreSQL 同名

转载 作者:行者123 更新时间:2023-11-29 14:27:30 29 4
gpt4 key购买 nike

从 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 demo

关于约束和主键的 PostgreSQL 同名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56279600/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com