Heim > Datenbank > MySQL-Tutorial > Wie kann ich einer vorhandenen SQLite-Tabelle eine Fremdschlüsseleinschränkung hinzufügen?

Wie kann ich einer vorhandenen SQLite-Tabelle eine Fremdschlüsseleinschränkung hinzufügen?

DDD
Freigeben: 2025-01-04 03:55:38
Original
266 Leute haben es durchsucht

How Can I Add a Foreign Key Constraint to an Existing SQLite Table?

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);
Nach dem Login kopieren

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)
);
Nach dem Login kopieren

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!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage