313 votes

Colonnes de la table avec une clé étrangère ne peuvent être nul ?

Par exemple, j’ai une table qui comporte plusieurs colonnes ID à d’autres tables. Je veux une clé étrangère pour forcer l’intégrité que si je mets les données là-dedans. Si je fais une mise à jour à une date ultérieure pour remplir cette colonne puis elle vérifie toujours la contrainte (il s’agit de personne à charge de serveur de base de données susceptible, j’utilise MySQL & InnoDB tableau type). Je crois que c’est une attente raisonnable, mais vous me corrigerez si je me trompe.

325voto

Daniel Vassallo Points 142049

Oui, vous pouvez appliquer la contrainte uniquement lorsque la valeur n’est pas NULL. Ceci peut être facilement testé avec l’exemple suivant :

La première insert va passer parce que nous insérer une valeur NULL dans la . Le deuxième insert échoue en raison de la contrainte de clé étrangère, puisque nous avons essayé d’insérer une valeur qui n’existe pas dans la table.

41voto

Backslider Points 61

J’ai constaté que lors de l’insertion, les valeurs de colonne null doivent être expressément déclarée comme NULL, sinon je recevrais une erreur de violation de contrainte (par opposition à une chaîne vide).

7voto

notJim Points 5142

Oui, qui va fonctionner comme vous l'attendez. Malheureusement, il me semble avoir de la difficulté à trouver un énoncé explicite de cette dans le manuel MySQL.

Les clés étrangères la valeur doit exister dans l'autre table. NULL renvoie à l'absence de valeur, de sorte que lorsque vous définissez une colonne est NULL, il ne serait pas logique d'essayer d'appliquer des contraintes sur que.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X