Heim > Datenbank > Oracle > Hauptteil

Detaillierte Einführung in den Einstellungsprozess von Fremdschlüsseln in Oracle

PHPz
Freigeben: 2023-04-04 09:29:55
Original
4219 Leute haben es durchsucht

Oracle-Datenbank ist ein sehr beliebtes relationales Datenbankverwaltungssystem (RDBMS) mit leistungsstarken Funktionen, einschließlich Unterstützung für Fremdschlüssel.

Ein Fremdschlüssel bezieht sich auf ein Feld oder eine Gruppe von Feldern in einer Tabelle, die zur Verknüpfung mit einer Zeile in einer anderen Tabelle verwendet wird. Damit kann die Datenintegrität sichergestellt und ein abfragebasierter Datenzugriff ermöglicht werden. Vor dem Hinzufügen von Fremdschlüsseleinschränkungen müssen die erforderlichen Tabellen und Verknüpfungen zwischen Tabellen in Oracle eingerichtet werden. In diesem Artikel stellen wir den Einstellungsprozess von Fremdschlüsseln in Oracle im Detail vor.

1. Tabellen und Beziehungen erstellen
Zuerst müssen wir die Tabelle erstellen, die Fremdschlüsseleinschränkungen festlegen muss, und die Tabelle, die auf die Tabelle verweist. Angenommen, wir möchten die Tabelle „customers“ mit der Tabelle „orders“ verknüpfen. Wir können diese beiden Tabellen in Oracle mit dem folgenden Code erstellen:

CREATE TABLE customers (
  customer_id INT PRIMARY KEY,
  customer_name VARCHAR(50),
  customer_email VARCHAR(100)
);

CREATE TABLE orders (
  order_id INT PRIMARY KEY,
  order_date DATE,
  customer_id INT,
  FOREIGN KEY (customer_id)
  REFERENCES customers(customer_id)
);
Nach dem Login kopieren

Im obigen Beispiel haben wir zwei Tabellen erstellt, nämlich Kunden und Bestellungen. Die Bestelltabelle enthält das Feld customer_id, das dem Kunden entspricht und das Primärschlüsselfeld der Kundentabelle ist.

2. Fremdschlüsseleinschränkungen hinzufügen
Nachdem wir die Beziehung hergestellt haben, können wir Fremdschlüsseleinschränkungen hinzufügen. Fremdschlüsseleinschränkungen in Oracle können beim Erstellen der Tabelle definiert oder nach dem Erstellen der Tabelle hinzugefügt werden.

Im vorherigen Schritt haben wir Fremdschlüsseleinschränkungen definiert und diese über FOREIGN KEY- und REFERENCES-Anweisungen zur Tabelle hinzugefügt. Hier erläutern wir die Bedeutung jedes Schlüsselworts im Detail:

  1. FREIMSCHLÜSSEL: Definieren Sie ein Fremdschlüsselfeld.
  2. REFERENZEN: Definiert eine Zieltabelle für Fremdschlüssel und gibt den Primärschlüssel der Zieltabelle an.
  3. ON DELETE CASCADE: Definieren Sie den Kaskadenvorgang beim Löschen übergeordneter Tabellendatensätze. Wenn ein Datensatz in der übergeordneten Tabelle gelöscht wird, werden auch die zugehörigen Datensätze in der untergeordneten Tabelle gelöscht. Sie können ON DELETE SET NULL oder ON DELETE NO ACTION verwenden, um andere Vorgänge anzugeben, z. B. das Festlegen des Fremdschlüssels auf NULL oder das Verbieten des Löschens.

In Oracle lautet die Syntax zum Hinzufügen einer Fremdschlüsseleinschränkung wie folgt:

ALTER TABLE child_table 
ADD CONSTRAINT fk_name 
FOREIGN KEY (child_column) 
REFERENCES parent_table (parent_column);
Nach dem Login kopieren

wobei „child_table“ die untergeordnete Tabelle ist, die das Fremdschlüsselfeld enthält, „child_column“ der Name der Fremdschlüsselspalte und „parent_table“ der Name der Zieltabelle, parent_column ist der Name der Zieltabelle. Der Name der Primärschlüsselspalte. fk_name ist der Name der Fremdschlüsseleinschränkung und muss eindeutig sein.

Zum Beispiel können wir in unserer Auftragstabelle die folgende Fremdschlüsseleinschränkung hinzufügen (beachten Sie, dass dies zum Zeitpunkt der Tabellenerstellung über eine CREATE TABLE-Anweisung erfolgen kann):

ALTER TABLE orders 
ADD CONSTRAINT fk_customer_id 
FOREIGN KEY (customer_id) 
REFERENCES customers(customer_id) 
ON DELETE CASCADE;
Nach dem Login kopieren

Dadurch wird eine Fremdschlüsseleinschränkung namens fk_customer_id hinzugefügt Bestellungen-Tabelle Schlüsseleinschränkung, die sich auf die Primärschlüsselspalte customer_id in der Kundentabelle bezieht. Wenn Sie eine Zeile in der Tabelle „Kunden“ löschen, werden durch den Vorgang auch alle damit verbundenen Bestellungen gelöscht.

3. Fremdschlüsseleinschränkungen testen
Sobald die Fremdschlüsseleinschränkung zur Tabelle hinzugefügt wurde, können wir testen, ob sie ordnungsgemäß funktioniert. Wir können diese Einschränkung testen, indem wir eine Zeile in die Tabelle „Orders“ einfügen, die nicht mit dem Wert „customer_id“ übereinstimmt:

INSERT INTO orders (order_id, order_date, customer_id)
VALUES (1, '2021-01-01', 100);

-- ERROR: ORA-02291: integrity constraint (fk_customer_id) violated - parent key not found
Nach dem Login kopieren

Dies führt zu einem Fehler, da es auf einen Wert „customer_id“ verweist, der in der Tabelle „customers“ nicht vorhanden ist. Wir können den Fehlercode ORA-02291 im Zusammenhang mit Integritätseinschränkungen verwenden, um zu überprüfen, ob der Fremdschlüssel funktioniert.

4. Zusammenfassung
In Oracle sind Fremdschlüssel ein wichtiges Werkzeug, um die Datenintegrität sicherzustellen und Beziehungen zwischen Tabellen aufrechtzuerhalten. Wir können die Schlüsselwörter FOREIGN KEY und REFERENCES verwenden, um Fremdschlüsseleinschränkungen und Kaskadenoperationen mit ON DELETE CASCADE, SET NULL oder NO ACTION zu definieren. Nachdem wir die Fremdschlüsseleinschränkung definiert haben, können wir testen, ob sie ordnungsgemäß funktioniert, und sicherstellen, dass sie bei Datenbankoperationen funktioniert.

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in den Einstellungsprozess von Fremdschlüsseln in Oracle. 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