NOT NULL non fonctionnel

Eléphant du PHP | 158 Messages

26 avr. 2007, 17:41

Bonjour a tous :D

Je viens de créer la table suivante:

Code : Tout sélectionner

CREATE TABLE `traitement` ( `Nom_traitement` varchar(20) NOT NULL COMMENT 'Primary key', `Protocole` text NOT NULL COMMENT 'Manipulation a effectuer pour creer une lame avec ce protocole', PRIMARY KEY (`Nom_traitement`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Liste des traitements existant et leur protocole';
et d'exécuter la requête suivante:

Code : Tout sélectionner

INSERT INTO `traitement` ( `Nom_traitement` , `Protocole` ) VALUES ('', '');
Et au lieu de me dire que c'est impossible d'ajouter des champs vide la requête fonctionne et m'ajoute une ligne d'enregistrement vide, comment est ce possible ?!! :shock:

Merci d'avance pour vos réponses :)

PS: j'utilise easyphp 2.0 beta1 avec MySQL 5.0.27
°°°Darkbibou°°°

ViPHP
ViPHP | 5924 Messages

26 avr. 2007, 17:55

Pourquoi ne pourrait-il pas ajouter des lignes vides ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

26 avr. 2007, 18:02

Effectivement, la chaine vide est différente de la valeur NULL.

De plus, comme il s'agit de ta 1ère ligne insérée, ta contrainte d'unicité de ta clé primaire n'entre pas en compte et rien n'interdit l'insertion
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 158 Messages

26 avr. 2007, 18:15

OKi merci je n'avais pas compris cette nuance :oops:

Donc en fait il n'y a que si je fait la requête suivante que MySQL refusera:

Code : Tout sélectionner

INSERT INTO `traitement` ( `Nom_traitement` , `Protocole` ) VALUES (null, null);
C'est bien ca ?
°°°Darkbibou°°°

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

26 avr. 2007, 19:58

Oui c'est bien ça.

Ce qu'il faut garder à l'esprit c'est que NULL représente l'absence d'information. Si on te demande combien tu veux de sucres dans ton café, NULL correspond à "je sais pas" ou même à ne pas répondre du tout. Si tu ne veux pas de sucres dans ton café alors la réponse est 0. Également à garder à l'esprit même si ce n'est pas lié à ton problème, c'est que rien n'est jamais inférieur, égal ou supérieur à NULL. "WHERE champ > NULL" ne renverra aucuns résultats. Pour continuer dans l'analogie, si un serveur SQL te demande combien de sucres et que tu réponds NULL ben il va même pas t'apporter ton café noir :lol:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

27 avr. 2007, 09:45

Pour continuer dans l'analogie, si un serveur SQL te demande combien de sucres et que tu réponds NULL ben il va même pas t'apporter ton café noir :lol:
Un de ces jours, je veux que tu me donnes l'adresse où tu achètes tes serveurs SQL toi :mrgreen:
A moins que ce soit une configuration que j'ai raté :-k
:langue:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
ViPHP | 5924 Messages

27 avr. 2007, 11:19

Pour continuer dans l'analogie, si un serveur SQL te demande combien de sucres et que tu réponds NULL ben il va même pas t'apporter ton café noir :lol:
Un de ces jours, je veux que tu me donnes l'adresse où tu achètes tes serveurs SQL toi :mrgreen:
A moins que ce soit une configuration que j'ai raté :-k
:langue:
A mon avis, il doit appeler son serveur à partir de java pour avoir son café :D

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 avr. 2007, 11:23

héhé, en fait tu t'étais trompé hier, c'était : java kawa.. ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 158 Messages

02 mai 2007, 10:44

Merci pour vos réponses :)
°°°Darkbibou°°°