Heim >Datenbank >MySQL-Tutorial >Wie verweise ich auf einen mehrspaltigen Primärschlüssel in MySQL?

Wie verweise ich auf einen mehrspaltigen Primärschlüssel in MySQL?

DDD
DDDOriginal
2024-12-02 18:16:15684Durchsuche

How Do I Reference a Multi-Column Primary Key in MySQL?

Referenzieren eines mehrspaltigen Primärschlüssels in MySQL

Beim Herstellen von Beziehungen zwischen Tabellen kommt es häufig zu Szenarios, in denen ein Primärschlüssel mehrere enthält Spalten. In MySQL erfordert das Erstellen eines Fremdschlüssels für eine solche Tabelle einen maßgeschneiderten Ansatz.

Stellen Sie sich ein Szenario vor, in dem Sie eine Tabelle mit dem folgenden Primärschlüssel haben:

CREATE TABLE ProductAttributes (
  product_id INT NOT NULL,
  attribute_id INT NOT NULL,
  PRIMARY KEY (product_id, attribute_id)
);

Angenommen, Sie haben einen eine weitere Tabelle, die auf die ProductAttributes-Tabelle verweisen muss. Um einen Fremdschlüssel einzurichten, der die beiden Tabellen verknüpft, führen Sie die folgenden Schritte aus:

CREATE TABLE MyReferencingTable AS (
  [COLUMN DEFINITIONS]
  refcol1 INT NOT NULL,
  rofcol2 INT NOT NULL,
  CONSTRAINT fk_mrt_ot FOREIGN KEY (refcol1, refcol2)
                        REFERENCES ProductAttributes(product_id, attribute_id)
) ENGINE=InnoDB;

Durch Angabe der Spalten in der referenzierenden Tabelle und der entsprechenden Spalten in der Primärschlüsseltabelle erstellen Sie eine Fremdschlüsseleinschränkung. Diese Einschränkung stellt sicher, dass jede Zeile in der Referenzierungstabelle einen passenden Primärschlüssel in der Primärschlüsseltabelle hat.

Überlegungen:

  • MySQL erfordert Fremdschlüssel indiziert, was den Index der referenzierenden Spalten erklärt.
  • Verwenden Sie die Einschränkungssyntax, um die Einschränkung zu benennen, damit sie später einfacher geändert oder gelöscht werden kann an.
  • Denken Sie daran, dass InnoDB Fremdschlüssel erzwingt, während MyISAM sie ignoriert.

Das obige ist der detaillierte Inhalt vonWie verweise ich auf einen mehrspaltigen Primärschlüssel in MySQL?. 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