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!