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.
Réponses
Trop de publicités?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.
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.