2010-01-03 4 views
0

je veux que lorsque je passe requête qui ajouter des valeurs dans la base de données mysql alors les valeurs nulles ne devraient pas être passes que dois-je faire? et où et comment utiliser ces codes? s'il vous plaît dites-moi en détail je suis totalement nouveau iciarrêter les valeurs nulles passant à mysql

Répondre

4

Pour commencer, contraindre vos colonnes dans la base de données pour être NOT NULL. Cela empêchera le stockage de données invalides.

Ensuite, vous devez considérer une représentation de données dans votre code qui n'implique pas de valeurs NULL. Cela peut avoir un impact sur la façon dont vous représentez les valeurs par défaut ou non spécifiées.

Vous pouvez trouver (comme un effet secondaire) que votre code devient plus simple et moins sujette aux erreurs puisque vous n'avez pas à vous soucier de déréférencer les valeurs NULL dans votre code. Par conséquent, éliminer les valeurs NULL de la base de données et votre code me semble être une bonne pratique, en général.

+0

Ceci est un bon conseil. Les contraintes sur les données doivent être sous le contrôle de la base de données, pas une application. C'est parce que vous ne savez jamais quand une application errante ou malveillante peut entrer et se joindre à vos données précieuses. Si vous ne voulez pas arrêter ces applications mais que vous voulez empêcher les NULL, vous pouvez opter pour un trigger d'insertion/mise à jour pour transformer les NULL en quelque chose d'autre, mais c'est un kludge. – paxdiablo

1

La seule façon d'ajouter un enregistrement sans NULL est de spécifier des valeurs pour chaque colonne.

+0

Ou ajoutez des valeurs par défaut judicieuses. – duffymo

1

Si vous souhaitez une erreur lors de l'ajout de valeurs nulles dans la base de données, vous pouvez définir la valeur NOT NULL.

Si vous ne voulez pas d'erreur, vous pouvez utiliser une valeur par défaut pour ce champ. La valeur du champ sera donc la valeur par défaut au lieu de null.


Lorsque votre table est en mode d'édition (sélectionnez la plume à PhpMyAdmin),

  • vous pouvez définir la valeur par défaut d'un champ,

  • Pour le réglage non nul, vous pouvez un -check la case à cocher NULL

0

Avant de Si vous vous efforcez de garder vos données à zéro, assurez-vous de ne pas en avoir besoin. Les valeurs nulles sont le meilleur moyen de représenter des valeurs inconnues. Cependant, vous devez écrire du code qui s'attend à des valeurs nulles, ce qui dissuade beaucoup de gens.

Il est tentant d'utiliser une valeur par défaut, ou une valeur absolument absurde, pour null. Cela conduit souvent à des problèmes sur la route, cependant. Il y a des anecdotes sur des gens avec des plaques de vanité comme "NOPLATE", et "XXXXXXXX", obtenant des centaines de billets pour d'autres voitures, parce que les écrivains utiliseraient ces valeurs, où NULL aurait été le meilleur choix. Si la personne qui a mis les données de ticket dans l'ordinateur avait un moyen de mettre NULL dans le champ numéro de plaque, le problème ne se produirait pas. ... et hé, les défenseurs du diable - la chaîne "NULL" est différente de la valeur, NULL, de sorte que vous pourriez avoir une plaque de vanité qui dit, "NULL", dans un monde parfait. (Je n'accepterai pas la responsabilité de la formation des agents de la circulation sur NULL, mais j'accepterais un contrat pour former les gens de la police informatique, pour le bon prix.)

Il n'est pas rare d'utiliser une valeur "absurde" like, "1/1/1899", pour une date inconnue, au lieu d'autoriser les valeurs nulles. Il y a deux problèmes avec cela, cependant. Tout d'abord, les utilisateurs vous choqueront en ayant réellement besoin de cette date un jour. Deuxièmement, vous devez écrire du code qui recherche "1/1/1899", quand écrire du code pour gérer null serait la même quantité de travail, et serait plus sémantiquement correct.

Utilisez une contrainte NOT NULL pour le cas d'utilisation, "cette valeur ne peut jamais, jamais être nulle. Tout ce qui est décrit par la clé primaire doit TOUJOURS avoir une valeur pour cela." Évitez d'utiliser une contrainte NOT NULL pour conserver les valeurs nulles hors de la base de données pour une valeur qui pourrait être manquante ou inconnue.

La valeur NULL peut être utile. C'est le meilleur moyen de représenter des données inconnues.