Maison >base de données >tutoriel mysql >Comment référencer une clé primaire multicolonne dans MySQL ?

Comment référencer une clé primaire multicolonne dans MySQL ?

DDD
DDDoriginal
2024-12-02 18:16:15684parcourir

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

Référencement d'une clé primaire multi-colonnes dans MySQL

Lors de l'établissement de relations entre des tables, il est courant de rencontrer des scénarios dans lesquels une clé primaire comprend plusieurs colonnes. Dans MySQL, la création d'une clé étrangère pour une telle table nécessite une approche sur mesure.

Considérez un scénario dans lequel vous disposez d'une table avec la clé primaire suivante :

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

Maintenant, supposons que vous ayez une autre table qui doit référencer la table ProductAttributes. Pour établir une clé étrangère qui relie les deux tables, suivez ces étapes :

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;

En spécifiant les colonnes dans la table de référencement et les colonnes correspondantes dans la table de clé primaire, vous créez une contrainte de clé étrangère. Cette contrainte garantit que chaque ligne de la table de référencement a une clé primaire correspondante dans la table de clés primaires.

Considérations :

  • MySQL exige que les clés étrangères soient indexé, ce qui explique l'index sur les colonnes de référencement.
  • Utilisez la syntaxe de contrainte pour nommer la contrainte afin de faciliter modification ou suppression ultérieure.
  • N'oubliez pas qu'InnoDB applique les clés étrangères, tandis que MyISAM les ignore.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn