Heim > Datenbank > MySQL-Tutorial > Warum schlägt meine PostgreSQL-Fremdschlüsselreferenz mit „FEHLER: Es gibt keine eindeutige Einschränkung, die mit bestimmten Schlüsseln für die referenzierte Tabelle ‚bar' übereinstimmt' fehl?

Warum schlägt meine PostgreSQL-Fremdschlüsselreferenz mit „FEHLER: Es gibt keine eindeutige Einschränkung, die mit bestimmten Schlüsseln für die referenzierte Tabelle ‚bar' übereinstimmt' fehl?

Patricia Arquette
Freigeben: 2025-01-08 22:20:47
Original
681 Leute haben es durchsucht

Why Does My PostgreSQL Foreign Key Reference Fail with

PostgreSQL-Fremdschlüssel-Einschränkungsfehler: Ein einzigartiges Einschränkungsproblem

Dieser Artikel befasst sich mit einem häufigen Fremdschlüsseleinschränkungsfehler in PostgreSQL 9.1: „FEHLER: Es gibt keine eindeutige Einschränkung, die mit den angegebenen Schlüsseln für die referenzierte Tabelle „bar“ übereinstimmt.“ Wir analysieren die Ursache und bieten eine Lösung.

Das Szenario umfasst drei Tabellen: „foo“, „bar“ und „baz“. „foo“ hat einen Primärschlüssel („name“). „bar“ verweist über „foo_fk“ auf „foo“, hat einen eigenen Primärschlüssel („pkey“) und eine eindeutige Einschränkung für („foo_fk“, „name“). „baz“ verweist mit „bar_fk“ auf „bar“.

Die Fehlermeldung bedeutet, dass die Fremdschlüsseleinschränkung in „baz“ nicht erzwungen werden kann, da mehrere Zeilen in „bar“ möglicherweise dieselben Werte für „foo_fk“ und „name“ haben. Dies verletzt die referenzielle Integrität, da der Fremdschlüssel in „baz“ eine entsprechende Zeile in „bar“ nicht eindeutig identifizieren kann.

Das Problem ergibt sich aus der Eindeutigkeitsbeschränkung in „bar“. Obwohl es in der Kombination von „foo_fk“ und „name“ eindeutig ist, garantiert es nicht die Einzigartigkeit von „name“ innerhalb von „bar“ unabhängig voneinander. Daher könnten in „bar“ mehrere Zeilen mit demselben „Namen“, aber unterschiedlichen „foo_fk“-Werten vorhanden sein.

Die Lösung:

Um dieses Problem zu beheben, fügen Sie der Spalte „name“ in der Tabelle „bar“ eine eindeutige Einschränkung hinzu. Dadurch wird sichergestellt, dass jeder „Name“-Wert eindeutig ist, sodass die Fremdschlüsseleinschränkung in „baz“ ordnungsgemäß funktioniert. Nach der Implementierung dieser eindeutigen Einschränkung wird die Fremdschlüsselbeziehung ordnungsgemäß durchgesetzt, wodurch der Fehler verhindert und die beabsichtigte Datenbankstruktur hergestellt wird.

Das obige ist der detaillierte Inhalt vonWarum schlägt meine PostgreSQL-Fremdschlüsselreferenz mit „FEHLER: Es gibt keine eindeutige Einschränkung, die mit bestimmten Schlüsseln für die referenzierte Tabelle ‚bar' übereinstimmt' fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage