Maison > base de données > tutoriel mysql > Les clés étrangères MySQL peuvent-elles autoriser les valeurs NULL ?

Les clés étrangères MySQL peuvent-elles autoriser les valeurs NULL ?

Patricia Arquette
Libérer: 2025-01-11 10:12:41
original
158 Les gens l'ont consulté

Can MySQL Foreign Keys Allow NULL Values?

Les clés étrangères MySQL autorisent-elles les valeurs NULL ?

Le respect de l'intégrité des données est essentiel lors de la conception des tables de base de données. Les références aux colonnes d'autres tables via des clés étrangères jouent un rôle clé dans le maintien de ces connexions. Une question courante est la suivante : les colonnes de table avec des clés étrangères autorisent-elles les valeurs NULL ?

Dans MySQL utilisant le type de table InnoDB, la réponse est oui. Vous pouvez déclarer les colonnes de clé étrangère comme nullables. Ce comportement vous permet d'insérer de nouvelles lignes avec des valeurs NULL dans les colonnes de clé étrangère, mais applique des contraintes lors de la saisie de valeurs non NULL.

Pour illustrer cela, considérons l'exemple suivant :

<code class="language-sql">CREATE TABLE parent (id INT NOT NULL, PRIMARY KEY (id));
CREATE TABLE child (
  id INT NULL,
  parent_id INT NULL,
  FOREIGN KEY (parent_id) REFERENCES parent(id)
);</code>
Copier après la connexion

Maintenant, insérons une ligne dans la table « enfant » où « parent_id » est NULL :

<code class="language-sql">INSERT INTO child (id, parent_id) VALUES (1, NULL);
-- 查询成功,影响 1 行 (0.01 秒)</code>
Copier après la connexion

Cette opération d'insertion a réussi car nous avons spécifié une valeur NULL pour la colonne "parent_id". Cependant, tenter d'insérer une valeur non NULL qui n'existe pas dans la table "parent" entraînera une erreur car la contrainte de clé étrangère est appliquée :

<code class="language-sql">INSERT INTO child (id, parent_id) VALUES (2, 1);

-- 错误 1452 (23000):无法添加或更新子行:外键约束失败 (`t/child`, CONSTRAINT `child_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`))</code>
Copier après la connexion

Ce comportement offre flexibilité et contrôle sur l'intégrité des données. Vous pouvez autoriser des valeurs NULL temporaires lors du remplissage des données tout en appliquant ultérieurement des contraintes de clé étrangère. En gérant soigneusement les contraintes NULL sur les colonnes de clé étrangère, vous pouvez garantir l'exactitude et la cohérence de vos données.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal