Contrainte avec PRIMARY KEY / UNIQUE <<< |
Contraintes avec NOT NULL et DEFAULT | Constrante avec ENUM et SET >>> |
1.8.6 Comment MySQL gère les contraintes 1.8 Quels standards respecte MySQL? 1 Informations générales Manuel de Référence MySQL 4.1 : Version Française . Contrainte avec PRIMARY KEY / UNIQUE ->Contraintes avec NOT NULL et DEFAULT . Constrante avec ENUM et SET |
1.8.6.2 Contraintes avec NOT NULL et DEFAULT
Pour être capable de supporter facilement les tables non-transactionnelles, tous les champs de MySQL ont des valeurs par défaut. Si vous insérez une valeur invalide dans une colonne, comme la valeur NULL dans une colonne NOT NULL , ou une valeur qui provoque un dépassement de capacité dans une colonne numérique, MySQL ne va pas émettre d'erreur, mais mettre la 'meilleure valeur possible' dans la colonne. Pour les valeurs numérique, c'est 0, la plus petite valeur possible, ou la plus grande valeur possible. Pour les chaînes, c'est soit la chaîne vide, soit la chaîne la plus grande qui puisse être placé dans la colonne.Cela signifie que si vous essayez de stocker la valeur NULL dans une colonne qui ne prend pas de valeurs NULL , MySQL va stocker la valeur 0 ou la chaîne vide '' . Ce dernier comportement peut, pour les insertions unitaires, être modifié par l'option -DDONT_USE_DEFAULT_FIELDS au moment de la compilation. Les options habituelles de configure . Ce fait que les commandes INSERT génère une erreur, à moins que vous ne spécifiez explicitement la valeur de toutes les colonnes qui requièrent une valeur non - NULL . La raison de cette règle ci-dessus est que nous ne pouvons pas vérifier ces conditions avant que la requête ne soit exécutée. Si nous rencontrons un problème après la modification de quelques lignes, nous ne pourront pas annuler la modification, car la table ne le supporte peut-être pas. L'alternative qui consiste à s'arrêter c'est pas envisageable non plus, car nous aurions alors fait la moitié du travail, ce qui sera alors le pire scénario. Dans ce cas, il vaut mieux faire 'du mieux possible', et continuer comme si rien n'était arrivé. En MySQL 5.0, nous envisageons d'améliorer cela en fournissant des alertes de conversions automatique, ainsi qu'une option pour vous permettre d'annuler la commande si elle n'utilise que des tables transactionnelles.Ceci signifie qu'il ne faut pas compter sur MySQL pour vérifier le contenu des champs, mais de gérer cela au niveau de l'application. |
<< | Contraintes avec NOT NULL et DEFAULT | >> |
Contrainte avec PRIMARY KEY / UNIQUE | Comment MySQL gère les contraintes | Constrante avec ENUM et SET |