PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Em que nível os nomes de índice do Postgres precisam ser exclusivos?


Índices e tabelas (e exibições, sequências e...) são armazenados em pg_class catalog, e eles são exclusivos por esquema devido a uma chave exclusiva nele:
# \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)

De acordo com o comentário de @wildplasser, você pode omitir o nome ao criar o índice e o PG atribuirá um nome exclusivo automaticamente.