Was sind SQLite Fremd Keys

Was sind SQLite Fremd Keys
SQLite ist ein Open-Source-RDBMS (Relational Database Management System), das die Daten in Tabellen verwaltet. Die in Datenbanken verwendeten Tabellen können Beziehungen zueinander haben, um diese Beziehung aufzubauen. Fremdeschlüssel werden verwendet. Fremdschlüsse Erkennen Sie, welche Tabelle mit welcher Tabelle verbunden ist.

Die Beziehungen zwischen den Tabellen sind das Schlüsselmerkmal von relationalen Datenbanken, die durch Fremd- und Primärschlüssel dargestellt werden. In diesem Artikel werden wir die ausländischen Schlüssel und ihre Arbeit in SQLite erklären.

Was sind ausländische Schlüssel?

Fremdschlüssel sind die Werte in einer Tabelle, die den Primärschlüssel einer anderen Tabelle anzeigen. Um dies zu verstehen, betrachten wir zwei Tabellen, Tabelle A und Tabelle B:

Tabelle a

Studenten -ID (primary_key) Name des Studenten Lehrer -ID (Forign_key)
1 John 123
2 Paul 453

Tabelle b

Lehrer -ID (primär_key) Lehrernamen Probanden erlaubt
123 Alex Mathematik, Physik
453 Juana Chemie, Botanik

Nun in Tabelle a, Studenten ID ist der Hauptschlüssel dieser Tabelle und Lehrerausweis ist der fremde Schlüssel, aber in Tabelle B, Lehrerausweis ist der Hauptschlüssel. Die Lehrer -ID, die ein fremder Schlüssel ist, stellt eine Beziehung zwischen Tabelle A zu Tabelle B auf.

So überprüfen Sie den Status des Fremdschlüssels in SQLite

SQLite unterstützt die Funktion eines Fremdschlüssels nach der Veröffentlichung seiner Version 3.6.19, um zu überprüfen, ob die installierte Version von SQLite den Fremdschlüssel unterstützt oder nicht, führen Sie den folgenden Befehl in der SQLite -Umgebung aus:

Pragma fremd_keys;

Die Ausgabe kann entweder "0" oder "1" sein und wenn sie keine Ausgabe anzeigt, bedeutet dies, dass die Fremdkasten nicht unterstützt werden.

Ausgang Ergebnis
0 Die ausländischen Schlüssel sind deaktiviert
1 Die fremden Schlüssel sind aktiviert

So aktivieren/deaktivieren Sie fremde Schlüssel in SQLite

Um die ausländischen Schlüssel in SQLite zu aktivieren, führen Sie Folgendes aus:

Pragma fremd_keys = on;

Wir können die Fremdschlüssel deaktivieren, indem wir nur im obigen Befehl abgeben, anstatt auf den obigen Befehl. Um zu bestätigen, dass ausländische Schlüssel aktiviert sind, führen Sie den Befehl pragma aus:

Pragma fremd_keys;

Die Ausgabe zeigt 1, was bedeutet, dass die Fremdschlüssel aktiviert werden.

Was ist die allgemeine Syntax der Verwendung von Fremdschlüssel

Die allgemeine Syntax der Verwendung eines Fremdschlüssels zum Erstellen einer Tabelle lautet:

TABLE TABLE_NAME CREATE
(
column1 dataType [null | Nicht null] Primärschlüssel,
column2 DataType [NULL | Nicht null] Fremdschlüssel,

Fremdschlüssel (Spalte1, Spalte2,…))
Referenzen parent_table (Spalte1, Spalte2…)
);

Die Erklärung davon ist:

  • Verwenden Sie die Klausel "TABELLE ERSTELLEN" Für die Schaffung eines Tisches
  • Ersetzen Sie den Namen der Tabelle
  • Definieren Sie die Spalten mit ihren Datentypen und definieren Sie auch, ob die Unterstützung der Null/nicht -Nullwerte
  • Erwähnt auch die Spalten, die den Primärschlüssel und den Fremdschlüssel enthalten
  • Verwenden Sie die Anweisung UNBEKANNTER SCHLÜSSEL und erwähnen Sie in () die Spaltennamen, die Fremdschlüssel sind
  • Verwenden Sie die Klausel REFERENZ und ersetzen Sie das Elternteil_table durch den Namen der übergeordneten Tabelle und erwähnen Sie seine Fremdschlüssel

Wie funktioniert ein Fremdschlüssel in SQLite?

Um die Arbeit von ausländischen Schlüssel zu verstehen, sollten wir ein Beispiel für einen Kurierdienst in Betracht ziehen und zwei Tabellen erstellen, Customer_Details und Shipment_Details, die die folgenden Daten haben:

Kundendetails

Kundennummer Kundenname Sendung_ID
1 John 5612
2 Paul 3467

Versanddetails

Sendung_ID Status Aus (Stadt) Zu (Stadt)
5612 Geliefert London Manchester
3467 In Bearbeitung Bristol Cardiff

In der Tabelle, Customer_Details. Und in der Tabelle, Shipment_Details, Sipment_ID ist ein Primärschlüssel.

So fügen Sie einen fremden Schlüssel in SQLite hinzu

Um eine Tabelle zu erstellen, führen Customer_Details den folgenden Befehl aus:

TABLE Customer_Details erstellen (Customer_id Integer Primärschlüssel, Customer_Name Text NOT NULL, SHARPS_ID Ganzzahl nicht NULL, Fremd Key (Shipment_ID) Referenzen Shipment_Details (Shipment_ID));

Im obigen Befehl haben wir den Fremdschlüssel und den Primärschlüssel erwähnt und finden Sie auch auf die Tabelle, in der der Fremdschlüssel verfügbar sein wird. Nach der Erstellung der Tabelle customer_details erstellen wir die Tabelle Shipment_Details als:

TABLE Sendment_details erstellen (Sendung Integer Primärschlüssel, Status Text, City_From Text, City_to Text);

Verwenden Sie nun den folgenden Befehl, um Werte in die Tabelle customer_details einzufügen:

In Customer_Details (Customer_ID, Customer_Name, Shipment_ID) einfügen (1, 'John', 5612), (2, 'Paul', 3467);

Wir können sehen, dass es den Fehler von “generiert hat“Fehler: Fremdschlüsselbeschränkung ist fehlgeschlagenDieser Fehler wird generiert, weil wir uns auf den Versand der Tabelle beziehen, Shipment_details, die noch keinen Wert hat. Um diesen Fehler zu entfernen, müssen wir zuerst die Daten in Shipment_details bearbeiten, die wir uns auf den Fremdschlüssel beziehen. Führen Sie den folgenden Befehl aus, um Daten in die Tabelle Shipment_Details einzufügen:

Einfügen in Sendment_Details (Sendung, Status, City_From, City_to) Werte (5612, 'geliefert', 'London', 'Manchester'), (3467, 'in_Process', 'Bristol', 'Cardiff');

Um die Tabelle anzuzeigen, leiten Sie den Befehl aus: Sendment_details: Ausführen des Befehls:

Wählen Sie * aus Shipment_Details;

Führen Sie nun den Befehl erneut aus, um Werte in Customer_Details mit der Anweisung einzulegen:

In Customer_Details (Customer_ID, Customer_Name, Shipment_ID) einfügen (1, 'John', 5612), (2, 'Paul', 3467);

Der Befehl wurde erfolgreich ausgeführt, ohne den Fehler "Fremdschlüsselbeschränkungen fehlgeschlagen" zu generieren. Führen Sie den Befehl aus, um die Tabelle anzuzeigen:

Wählen Sie * aus customer_details;

Was sind die Aktionen für ausländische Schlüsselbeschränkungen?

Es gibt einige Aktionen, die Sie auf dem übergeordneten Schlüssel ausführen können, wobei der Kinderschlüssel reagiert. Die allgemeine Syntax ist:

Fremd Key (fremd_key_column)
Referenzen parent_table (parent_key_column)
Auf Update
Beim Löschen;

Eine Erklärung für diese Syntax ist:

  • Schreiben Sie die Klausel von UNBEKANNTER SCHLÜSSEL und ersetzen Sie die "fremd_key_column" durch den Namen Ihres Fremdschlüssels
  • Ersetzen Sie das "Eltern_Table" durch den Namen der übergeordneten Tabelle und auch "Eltern_Key_Columns" durch den übergeordneten Schlüsselnamen
  • Schreiben Sie die Klausel "On Update" und "On Delete" und ersetzen Sie die "" durch die Aktion, die Sie ausführen möchten

SQLite unterstützt die in der Tabelle erklärten Aktionen:

Aktion Beschreibung
Null Wenn die übergeordnete Taste gelöscht wird
Setzen Sie Standard Es funktioniert genauso wie die NULL -Aktion, aber anstatt Nullwerte in die Spalte der untergeordneten Schlüssel zu setzen, legt es einen Standardwert fest
Keine Aktion Wenn Änderungen im übergeordneten Schlüssel der übergeordneten Datenbank vorgenommen werden, werden im untergeordneten Schlüssel keine Änderungen stattgefunden
Beschränken Der Benutzer kann die Werte nicht von einem übergeordneten Schlüssel hinzufügen oder löschen
Kaskade Es geht auf die Änderungen weiter, die in einer übergeordneten Tabelle an die Kindertisch vorgenommen werden

Abschluss

Relationale Datenbanken sind beliebt, um die Beziehungen zwischen den Tabellen bereitzustellen, SQLite, eine der relationalen Datenbanken, unterstützt diese Funktion ebenfalls. Die Beziehungen werden mit Hilfe von Schlüssel hergestellt, die als Fremd- und Primärschlüssel bezeichnet werden. In SQLite sollte der Fremdschlüssel aktiviert werden, um ihn zu verwenden. In diesem Artikel haben wir gelernt, was die ausländischen Schlüssel in SQLite sind und wie sie funktionieren. Wir haben auch die Einschränkungen der von SQLite unterstützten ausländischen Schlüssel erörtert.