Maison  >  Article  >  base de données  >  Lorsque deux tables sont connectées à l'aide de MySQL FOREIGN KEY, comment pouvons-nous dire que les données de la table enfant conservent leur intégrité ?

Lorsque deux tables sont connectées à l'aide de MySQL FOREIGN KEY, comment pouvons-nous dire que les données de la table enfant conservent leur intégrité ?

王林
王林avant
2023-08-25 19:45:25724parcourir

当两个表用 MySQL FOREIGN KEY 连接时,怎么能说子表中的数据保持了完整性呢?

En fait, les clés étrangères renforcent l'intégrité référentielle et nous aident à maintenir automatiquement la cohérence et l'intégrité des données. Cela peut être compris à l'aide des exemples des deux tableaux « client » et « commandes ». Ici, « client » est la table parent et « commandes » est la table enfant. Nous ne pouvons pas créer de commandes pour des clients inexistants. Cela peut être démontré en insérant des valeurs dans les deux tableaux comme indiqué ci-dessous -

mysql> Select * from Customer;
+----+--------+
| id | name   |
+----+--------+
| 1  | Gaurav |
| 2  | Raman  |
| 3  | Harshit|
| 4  | Aarav  |
+----+--------+
4 rows in set (0.00 sec)
mysql> Select * from orders;
+-----------+-------------+------+
| order_id  | product     | id   |
+-----------+-------------+------+
| 100       | Notebook    | 1    |
| 110       | Pen         | 1    |
| 120       | Book        | 2    |
| 130       | Charts      | 2    |
+-----------+-------------+------+
4 rows in set (0.00 sec)

Maintenant, supposons que nous essayions d'insérer la valeur d'un client inexistant dans le tableau "commandes" (l'identifiant 10 n'existe pas dans le "client " table), alors MySQL générera une erreur en raison de l'erreur suivante : Contrainte de clé étrangère.

mysql> insert into orders values(400, 'Notebook',10);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`query`.`orders`, CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`id`) REFERENCES `customer` (`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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer