Heim > Datenbank > MySQL-Tutorial > Warum wirft PostgreSQL „Keine eindeutige Einschränkung für die referenzierte Tabellenleiste' aus und wie kann ich das beheben?

Warum wirft PostgreSQL „Keine eindeutige Einschränkung für die referenzierte Tabellenleiste' aus und wie kann ich das beheben?

Mary-Kate Olsen
Freigeben: 2025-01-08 22:13:07
Original
502 Leute haben es durchsucht

Why Does PostgreSQL Throw

Dekodierung des PostgreSQL-Fehlers: „No Unique Constraint for Referenced Table 'bar'“

Benutzer von PostgreSQL 9.1 stoßen beim Erstellen miteinander verbundener Tabellen häufig auf diesen verwirrenden Fehler: „Es gibt keine eindeutige Einschränkung, die mit bestimmten Schlüsseln für die referenzierte Tabelle „bar“ übereinstimmt.“ In diesem Leitfaden werden die Grundursache und die Lösung erläutert.

Der Fehler tritt typischerweise auf, wenn Tabellen (z. B. foo, bar, baz) über Fremdschlüssel verknüpft sind. Beispielsweise könnte bar mit einem Fremdschlüssel (foo) auf foo_fk verweisen und baz mit einem anderen Fremdschlüssel (bar) auf bar_fk verweisen.

Das Problem liegt in der Tabelle bar. Während für eine kombinierte Spalte (wie foo_fk und name) möglicherweise ein eindeutiger Index vorhanden ist, fehlt für die Spalte name selbst eine eindeutige Einschränkung.

Stellen Sie sich dieses Szenario vor: Zwei Zeilen in bar haben denselben name-Wert (z. B. „ams“). Der Versuch, eine Zeile in baz einzufügen, die auf „ams“ in bar_fk verweist, führt zu Mehrdeutigkeiten. PostgreSQL kann die richtige Zeile bar nicht ermitteln, was zu dem Fehler führt.

Die Lösung: Einzigartigkeit erzwingen

Die Lösung ist unkompliziert: Fügen Sie eine eindeutige Einschränkung zur Spalte name in der Tabelle bar hinzu. Verwenden Sie diesen SQL-Befehl:

<code class="language-sql">ALTER TABLE bar ADD UNIQUE (name);</code>
Nach dem Login kopieren

Dadurch wird sichergestellt, dass jede bar-Zeile ein eindeutiges name hat, was Mehrdeutigkeiten auflöst und erfolgreiche Fremdschlüsselbeziehungen ermöglicht. Ihre Tabellenstruktur funktioniert nun wie vorgesehen.

Das obige ist der detaillierte Inhalt vonWarum wirft PostgreSQL „Keine eindeutige Einschränkung für die referenzierte Tabellenleiste' aus und wie kann ich das beheben?. 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