??? champ NOT NULL??? [Mysql] - SQL/NoSQL - Programmation
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
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
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?
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 !)
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'
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
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.
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
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)
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 mais je reviens si ça foire encore...
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 ...
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
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)
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 ?
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
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