Heim >Datenbank >MySQL-Tutorial >Kann ein Primärschlüssel auch als Fremdschlüssel dienen und wie behebe ich den MySQL-Fehler 1005?

Kann ein Primärschlüssel auch als Fremdschlüssel dienen und wie behebe ich den MySQL-Fehler 1005?

DDD
DDDOriginal
2024-12-06 02:22:15288Durchsuche

Can a Primary Key Also Serve as a Foreign Key, and How Do I Fix MySQL Error 1005?

MySQL-Fremdschlüsselfehler 1005 errno 150: Auflösen des Primärschlüssels als Fremdschlüsselproblem

Die Fremdschlüsseleinschränkungen von MySQL erzwingen die Datenintegrität durch Referenzieren von Feldern in anderen Tabellen. Wenn Sie jedoch einen Primärschlüssel als Fremdschlüssel verwenden, kann es zu Fehler 1005 kommen. Dieser Fehler tritt auf, wenn in der referenzierten Tabelle kein verwendbarer Index für die referenzierten Spalten vorhanden ist.

Kann ein Primärschlüssel ein Fremdschlüssel sein? Schlüssel?

Ja, ein Primärschlüssel kann auch ein Fremdschlüssel sein. Dies ist eine gängige Praxis beim Datenbankdesign, da dadurch sichergestellt wird, dass die referenzierende Tabelle nur gültige Daten enthält und die referenzielle Integrität der Beziehungen gewahrt bleibt.

Fehler 1005 beheben

Um Fehler 1005 zu beheben, müssen Sie einen Index für die referenzierten Spalten in der referenzierten Tabelle erstellen. Dieser Index ermöglicht es MySQL, die referenzierten Datensätze effizient zu finden. So können Sie das Problem in Ihrem speziellen Fall lösen:

ALTER TABLE Immobile ADD PRIMARY KEY (`ComuneImmobile`, `ViaImmobile`, `CivicoImmobile`, `InternoImmobile`);

Durch das Hinzufügen des Primärschlüssels werden die Spalten automatisch indiziert. Dadurch wird sichergestellt, dass die Fremdschlüssel in den anderen Tabellen (Condoni) auf die richtigen Datensätze in der Immobile-Tabelle verweisen können.

Alternative Lösung

Bei der Erstellung eines Index auf der Primärseite Schlüssel nicht möglich ist, können Sie stattdessen einen zusammengesetzten Fremdschlüssel verwenden. Dies bedeutet, dass mehrere Spalten des Primärschlüssels als Fremdschlüsselreferenzen verwendet werden. In diesem Fall würden Sie die folgenden Fremdschlüssel erstellen:

ALTER TABLE Condoni ADD FOREIGN KEY (`ComuneImmobile`, `ViaImmobile`) REFERENCES Immobile (`ComuneImmobile`, `ViaImmobile`);

Dieser zusammengesetzte Fremdschlüssel würde die referenzielle Integrität erzwingen, ohne dass ein Index für den Primärschlüssel erforderlich wäre.

Indem Sie diese implementieren Lösungen können Sie die gewünschten Beziehungen zwischen Ihren Datenbanktabellen herstellen und den Fehler 1005 vermeiden, wenn Sie einen Primärschlüssel als Fremdschlüsselreferenz verwenden.

Das obige ist der detaillierte Inhalt vonKann ein Primärschlüssel auch als Fremdschlüssel dienen und wie behebe ich den MySQL-Fehler 1005?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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