SQLite: Fremdschlüssel zu vorhandener Tabelle hinzufügen
Bei der Abfrage einer Datenbank ist die Aufrechterhaltung der Datenintegrität von größter Bedeutung. Fremdschlüssel spielen eine entscheidende Rolle bei der Durchsetzung von Beziehungen zwischen Tabellen und stellen sicher, dass Datenreferenzen gültig sind. Im Kontext von SQLite bestehen jedoch bestimmte Einschränkungen, wenn es darum geht, vorhandene Tabellen zu ändern.
Herausforderung: Fremdschlüssel zu vorhandener Tabelle hinzufügen
Stellen Sie sich das folgende Szenario vor: Sie haben eine vorhandene SQLite-Tabelle mit dem Namen „child“ mit dem folgenden Schema:
CREATE TABLE child( id INTEGER PRIMARY KEY, parent_id INTEGER, description TEXT);
Ihr Ziel ist es, eine Fremdschlüsseleinschränkung festzulegen in der Spalte „parent_id“, vorausgesetzt, dass Fremdschlüssel bereits aktiviert sind. Herkömmliche Methoden reichen jedoch möglicherweise nicht aus.
Lösung: Einschränkungen und Workaround
In SQLite ist das Hinzufügen eines Fremdschlüssels zu einer vorhandenen Tabelle nicht direkt mit der Funktion „ALTER“ möglich TABLE ADD CONSTRAINT“-Syntax. Im Gegensatz zu anderen Datenbanksystemen fehlt SQLite die Unterstützung für diese spezielle ALTER TABLE-Variante.
Die einzig mögliche Lösung besteht darin, die Tabelle während ihrer Erstellung zu ändern. Sie können die vorhandene „untergeordnete“ Tabelle löschen, sie mit der Fremdschlüsseleinschränkung neu erstellen und sie dann mit den gespeicherten Daten aus einer temporären Tabelle neu füllen:
CREATE TABLE child ( id INTEGER PRIMARY KEY, parent_id INTEGER, description TEXT, FOREIGN KEY (parent_id) REFERENCES parent(id) );
Dieses Verfahren stellt sicher, dass die Fremdschlüsseleinschränkung erfolgreich ist für die „Kind“-Tabelle eingerichtet.
Das obige ist der detaillierte Inhalt vonWie kann ich einer vorhandenen SQLite-Tabelle eine Fremdschlüsseleinschränkung hinzufügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!