[Mysql]??? champ NOT NULL???

??? champ NOT NULL??? [Mysql] - SQL/NoSQL - Programmation

Marsh Posté le 17-08-2002 à 20:48:12    

J'ai un petit pb sur ma bdd Mysql.
Je voudrais avoir une table avec 2 champs en INT, not null, en clef primaire + un 3eme champs pr l'ID de l'enregistrement:
Hors, quand je crée la table:
CREATE TABLE `login_dvd` (
  `id` INT NOT NULL AUTO_INCREMENT,  
  `id_login` INT NOT NULL,  
  `id_dvd` INT NOT NULL,
  INDEX (`id`),
  UNIQUE (`id_login`, `id_dvd`)
);
Je me vois attribuer dans le champs "Default"=0  :??:  
=> Oh ben non alors!!! si j'ai spécifié not null c'est pr éviter qu'on le laisse vide en inserant un enregistrement et pas qu'il m'insere un "0" !!!
Donc j'ai essayé d'en faire des vARCHAR avec not null et DEFAULT ="".
Et là j'ai bien rien dans le champs Default.
Mais quand je test le table en faisant :
INSERT INTO `login_dvd` (`id`, `id_login`, `id_dvd`) VALUES ('', '1', '';);
Et ben là, y a pas d'erreur et je vois dans la table un champs vide alors.... :??:  :??:  :??:  
Quelqu'un peu m'aider?


Message édité par oups93 le 17-08-2002 à 23:31:14
Reply

Marsh Posté le 17-08-2002 à 20:48:12   

Reply

Marsh Posté le 17-08-2002 à 21:13:20    

euh, si tu as une valeur par défaut sur un champs et qu'il est spécifié 'not null', je pense que c le 'not null' qui est le plus fort et donc, que la valeur par défaut ne sera jamais utilisée :/

Reply

Marsh Posté le 17-08-2002 à 21:28:57    

oui mais quand j'insere un enregistrement en spécifiant qu'une valeur sur les 2, je m'attends à avoir une erreur mais non!! il m'attribut la valeur par défaut :sarcastic:

Reply

Marsh Posté le 17-08-2002 à 21:48:02    

tu es sur que la déclaration SQL ci dessus est celle qui est en vigueur dans ta base?


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 17-08-2002 à 21:52:19    

NOT NULL ca a rien avoir avec 0 ou pas.
NOT NULL, ca veut dire que tu ne peux pas avoir de champ NULL.
Un champ NULL c'est une valeur non attribuée, tandis que 0 c'est une valeur qui existe (0 != NULL !)

Reply

Marsh Posté le 17-08-2002 à 21:54:46    

Si tu veux que ca t'insère "rien", au contraire, il faut que tu déclares ton champ en NULL default='NULL'

Reply

Marsh Posté le 17-08-2002 à 23:27:44    

DarkLord a écrit a écrit :

tu es sur que la déclaration SQL ci dessus est celle qui est en vigueur dans ta base?




j'ai fait un copier/copier des requetes éxécutées

Reply

Marsh Posté le 17-08-2002 à 23:30:07    

joce a écrit a écrit :

NOT NULL ca a rien avoir avec 0 ou pas.
NOT NULL, ca veut dire que tu ne peux pas avoir de champ NULL.
Un champ NULL c'est une valeur non attribuée, tandis que 0 c'est une valeur qui existe (0 != NULL !)




C'est exactement ce que je cherche à faire.
Lors d'un insert d'un nouvel enregistrement je veux que tous les champs soit spécifié sinon je ne veux pas qu'on me mette un truc au pif ou par défaut.

Reply

Marsh Posté le 17-08-2002 à 23:39:01    

oups93 a écrit a écrit :

 
C'est exactement ce que je cherche à faire.
Lors d'un insert d'un nouvel enregistrement je veux que tous les champs soit spécifié sinon je ne veux pas qu'on me mette un truc au pif ou par défaut.




c'est un champ INT, donc il te mettra forcement un entier ! (celui specifié par defaut)
je comprends pas ton problème, qu'est ce que tu veux qu'il te mette :??:


Message édité par joce le 17-08-2002 à 23:39:27
Reply

Marsh Posté le 17-08-2002 à 23:43:30    

Au fait, je cherche à avoir un champ où on est obligé de spécifier la valeur pour pouvoir insérer un enregistrement.
Dans le cas où celui-si n'est pas spécifier
=> pas d'insertion, encore moins une valeur par défaut.
 
D'où mon test avec un champ en VARCHAR avec default="" et NOT NULL.=> mais ça marche po (décrit ci-dessus) :??:

Reply

Marsh Posté le 17-08-2002 à 23:43:30   

Reply

Marsh Posté le 18-08-2002 à 00:04:21    

Je viens de refaire la manip et ça a l'air de fonctionner comme je veux...  
Alors je suis désolé de vous avoir embrouiller :sweat: mais je reviens si ça foire encore... :sol:

Reply

Marsh Posté le 18-08-2002 à 01:44:29    

au pire, tout sgbd qui se respecte ne doit pas accepter de valeurs nulles comme clé dc ça doit marcher ...
 


---------------
sympathisant UBCT
Reply

Marsh Posté le 20-08-2002 à 01:55:48    

trueslash a écrit a écrit :

au pire, tout sgbd qui se respecte ne doit pas accepter de valeurs nulles comme clé dc ça doit marcher ...
 
 



avec mysql tu peux mettre un index sur un champ NULL

Reply

Marsh Posté le 20-08-2002 à 01:57:16    

oups93 a écrit a écrit :

Au fait, je cherche à avoir un champ où on est obligé de spécifier la valeur pour pouvoir insérer un enregistrement.
Dans le cas où celui-si n'est pas spécifier
=> pas d'insertion, encore moins une valeur par défaut.
 
D'où mon test avec un champ en VARCHAR avec default="" et NOT NULL.=> mais ça marche po (décrit ci-dessus) :??:  




je vois pas pkoi ca marcherait :??:
VARCHAR default="" NOT NULL ca veut dire que si tu spécifies rien il va te mettre une chaine vide (ce qui est totalement différent de NULL)

Reply

Marsh Posté le 20-08-2002 à 01:58:05    

si tu mets INSERT INTO `login_dvd` (`id`, `id_login`, `id_dvd`) VALUES (NULL, '1', NULL); il fait quoi ?

Reply

Marsh Posté le 20-08-2002 à 21:19:47    

joce a écrit a écrit :

avec mysql tu peux mettre un index sur un champ NULL




 
 
chavais pas pour l'index mais pour la clé ça me parait impossible :/


---------------
sympathisant UBCT
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed