gpt4 book ai didi

postgresql - Postgres 索引名称在什么级别需要唯一?

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

Microsoft SQL Server而MySQL,索引名称需要在表内唯一,但在数据库内不唯一。 PostgreSQL 似乎并非如此。

这就是我正在做的事情:我使用 CREATE TABLE new_table AS SELECT * FROM old_table 等创建了一个表的副本,并且需要重新创建索引。

运行类似 CREATE INDEX idx_column_name ON new_table USING GIST(column_name) 的查询会导致 ERROR: relation "idx_column_name"already exists

这是怎么回事?

最佳答案

索引和表(以及 View 、序列和...)存储在 pg_class 中目录,并且由于其上的唯一键,它们在每个模式中都是唯一的:

# \d pg_class
Table "pg_catalog.pg_class"
Column | Type | Modifiers
----------------+-----------+-----------
relname | name | not null
relnamespace | oid | not null
...
Indexes:
"pg_class_oid_index" UNIQUE, btree (oid)
"pg_class_relname_nsp_index" UNIQUE, btree (relname, relnamespace)

根据@wildplasser 的评论,您可以在创建索引时省略名称,PG 会自动分配一个唯一的名称。

关于postgresql - Postgres 索引名称在什么级别需要唯一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27306539/

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