首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgres只允许一个同名索引吗?

Postgres只允许一个同名索引吗?
EN

Stack Overflow用户
提问于 2021-05-17 16:14:31
回答 1查看 515关注 0票数 1

在MySQL中,可以在不同的表中具有相同的索引(相同的名称和列)。从我目前所看到的情况来看,Postgres只允许我有一个具有名称的索引,即使我试图在另一个表中创建它。

Postgres真的不允许同名索引,还是我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-17 16:39:56

您是正确的,索引、表、视图和序列共享相同的名称空间,因此,如果这些对象位于相同的架构(=名称空间),则它们中的任何两个都不能具有相同的名称。

您可以从目录表pg_class的表定义中看到这一点,其中包含所有这些对象:

代码语言:javascript
复制
\d pg_class

                     Table "pg_catalog.pg_class"
       Column        │     Type     │ Collation │ Nullable │ Default 
═════════════════════╪══════════════╪═══════════╪══════════╪═════════
 oid                 │ oid          │           │ not null │ 
 relname             │ name         │           │ not null │
[...]
Indexes:
    "pg_class_oid_index" UNIQUE, btree (oid)
    "pg_class_relname_nsp_index" UNIQUE, btree (relname, relnamespace)
    "pg_class_tblspc_relfilenode_index" btree (reltablespace, relfilenode)

第二个索引pg_class_relname_nsp_index强制名称和模式的组合是唯一的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67573434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档