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
Linda HamiltonOriginal
2024-12-01 18:24:10744Durchsuche

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;
  • 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!

Stellungnahme:
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