At what level do Postgres index names need to be unique?

前端 未结 2 1429
不知归路
不知归路 2021-01-03 20:20

In Microsoft SQL Server and MySQL, index names need to unique within the table, but not within the database. This doesn\'t seem to be the case for PostgreSQL.

Here\'

2条回答
  •  遥遥无期
    2021-01-03 20:36

    Indexes and tables (and views, and sequences, and...) are stored in the pg_class catalog, and they're unique per schema due to a unique key on it:

    # \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)
    

    Per @wildplasser's comment, you can omit the name when creating the index, and PG will assign a unique name automatically.

提交回复
热议问题