MySQL nous permet d'ajouter des contraintes FOREIGN KEY sur plusieurs colonnes d'une table. La condition est que chaque clé étrangère de la table enfant doit faire référence à une table parent différente.
Supposons que nous ayons une table nommée 'customer2' qui a une contrainte de clé primaire sur le champ 'cust_unq_id' comme indiqué ci-dessous -
mysql> describe customer2; +-------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------+------+-----+---------+-------+ | cust_id | int(11) | YES | | NULL | | | First_name | varchar(20) | YES | | NULL | | | Last_name | varchar(20) | YES | | NULL | | | City | varchar(10) | YES | | NULL | | | cust_unq_id | int(11) | NO | PRI | 0 | | +-------------+-------------+------+-----+---------+-------+ 5 rows in set (0.06 sec)
Nous avons déjà une table nommée commandes1 qui est déjà dans Il y a une contrainte de clé étrangère sur le champ 'Cust_id', qui fait référence à la table parent 'customer'.
mysql> describe orders1; +--------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+-------------+------+-----+---------+-------+ | order_id | int(11) | NO | PRI | NULL | | | Product_name | varchar(25) | YES | | NULL | | | orderdate | date | YES | | NULL | | | Cust_id | int(11) | YES | MUL | NULL | | | cust_unq_id | int(11) | YES | | NULL | | +--------------+-------------+------+-----+---------+-------+ 5 rows in set (0.04 sec)
Maintenant, avec l'aide de la requête ALTER TABLE suivante, nous pouvons ajouter une autre contrainte de clé étrangère sur le champ "cust_unq_id" qui fait référence à la table parent "customer2"
mysql> Alter table orders1 add FOREIGN KEY(cust_unq_id) REFERENCES Customer2(Cust_unq_id); Query OK, 0 rows affected (0.25 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> describe orders1; +--------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+-------------+------+-----+---------+-------+ | order_id | int(11) | NO | PRI | NULL | | | Product_name | varchar(25) | YES | | NULL | | | orderdate | date | YES | | NULL | | | Cust_id | int(11) | YES | MUL | NULL | | | cust_unq_id | int(11) | YES | MUL | NULL | | +--------------+-------------+------+-----+---------+-------+ 5 rows in set (0.06 sec)
Comme le montre l'ensemble de résultats ci-dessus, la table "orders1" a deux contraintes de clé étrangère, une sur "cust_id" et l'autre sur la contrainte de clé étrangère "cust_unq_id".
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!