Re: BUG #18295: In PostgreSQL a unique index on targeted columns is sufficient to support a foreign key
gparc@free.fr
From: gparc@free.fr
To: pgsql-bugs <pgsql-bugs@lists.postgresql.org>
Date: 2024-01-24T10:11:17Z
Lists: pgsql-bugs
Hello, any comment ? Regards ----- Mail original ----- De: "PG Bug reporting form" <noreply@postgresql.org> À: "pgsql-bugs" <pgsql-bugs@lists.postgresql.org> Cc: "gparc" <gparc@online.fr> Envoyé: Lundi 15 Janvier 2024 12:37:19 Objet: BUG #18295: In PostgreSQL a unique index on targeted columns is sufficient to support a foreign key The following bug has been logged on the website: Bug reference: 18295 Logged by: Gilles PARC Email address: gparc@online.fr PostgreSQL version: 16.1 Operating system: Linux Description: Hello, coming from Oracle, I'm surprised to see that in PostgreSQL, a foreign key can be linked to a unique index on the target table and not exclusively to a primary key constraint or UNIQUE constraint. Even if a primary/unique constraint implies the creation of a unique index, semantically, it's not the same. In Oracle, in that case (only unique index on targeted columns), we get the following error : ORA-02270: no matching unique or primary key for this column-list Reading the PostgreSQL documentation, I found this snippet in Chapter 5.4 (https://www.postgresql.org/docs/current/ddl-constraints.html#DDL-CONSTRAINTS-FK) : "A foreign key must reference columns that either are a primary key or form a unique constraint. This means that the referenced columns always have an index (the one underlying the primary key or unique constraint);" which seems to suggest that in PostgreSQL also a foreign key should refer to a primary/unique constraint on the target table. Is it a bug or an intended feature ? If the latter, I think the doc should be amended to remove any ambiguity. Regards P.S. by the way, I don't know what the SQL standard states about that.
Commits
-
Doc: mention foreign keys can reference unique indexes
- dff1756c392e 12.18 landed
- eda1d0dfe681 13.14 landed
- 973e14028e85 14.11 landed
- 6fc8a7b2b03b 15.6 landed
- 1c8336e3e2f3 16.2 landed
- c85977d8fef7 17.0 landed