Heim > Datenbank > MySQL-Tutorial > Wie erstelle ich einen Fremdschlüssel, der auf einen mehrspaltigen Primärschlüssel in MySQL verweist?

Wie erstelle ich einen Fremdschlüssel, der auf einen mehrspaltigen Primärschlüssel in MySQL verweist?

Linda Hamilton
Freigeben: 2024-12-01 18:24:10
Original
825 Leute haben es durchsucht

How to Create a Foreign Key Referencing a Multi-Column Primary Key in MySQL?

Referenzieren eines mehrspaltigen Primärschlüssels in MySQL

In einem relationalen Datenbankszenario, in dem eine Tabelle einen zusammengesetzten Primärschlüssel besitzt, der durch mehrere Spalten definiert ist (z. B. Produkt-ID, Attribut-ID) stellt sich häufig die Frage: Wie kann eine andere Tabelle eine Fremdschlüsselbeziehung mit dieser mehrspaltigen Primärtabelle herstellen? Schlüssel?

Lösung:

Zusammengesetzte Fremdschlüsselsyntax:

Die Lösung besteht darin, einen zusammengesetzten Fremdschlüssel in der Referenzierung zu definieren Tisch. Die Syntax für solche Fremdschlüssel lautet wie folgt:

CREATE TABLE MyReferencingTable (
    [COLUMN DEFINITIONS]
    refcol1 INT NOT NULL,
    refcol2 INT NOT NULL,
    CONSTRAINT fk_mrt_ot FOREIGN KEY (refcol1, refcol2)
                        REFERENCES OtherTable(col1, col2)
) ENGINE=InnoDB;
Nach dem Login kopieren
  • refcol1 und refcol2: Spalten in der Referenzierungstabelle, die den zusammengesetzten Fremdschlüsselschlüssel bilden.
  • col1 und col2: Spalten in der referenzierten Tabelle, die die primäre Tabelle bilden Schlüssel.
  • fk_mrt_ot: Ein Einschränkungsname für diesen Fremdschlüssel (optional, aber empfohlen).

Wichtige Überlegungen:

  • Indizierung: MySQL erfordert die Indizierung von Fremdschlüsselspalten, um eine effiziente Verknüpfung sicherzustellen Operationen.
  • CONSTRAINT-Syntax: Durch die Verwendung der Einschränkungssyntax wird eine benannte Referenz auf den Fremdschlüssel bereitgestellt, wodurch spätere Änderungen oder Entfernung einfacher werden.
  • Engine: InnoDB ist eine Transaktions-Engine, die Fremdschlüsselbeschränkungen erzwingt, aber MyISAM (eine nicht-transaktionale Engine) ignoriert Fremdschlüssel Spezifikationen.

Das obige ist der detaillierte Inhalt vonWie erstelle ich einen Fremdschlüssel, der auf einen mehrspaltigen Primärschlüssel in MySQL verweist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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