|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Nouveau Membre du Club
![]() |
Bonjour,
Dans le cadre d'une application non professionnel, j'ai créé des tables avec des valeurs par défaut. Code :
Si je fais : Code :
je peux voir que la valeur "non renseigné" n'a pas été prise en compte. Comment dois je procéder ? Merci, Shinn77, Till the End of Time |
||||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : juillet 2006 Messages : 2 662 ![]() |
tu n'as pas de message d'erreur?
sinon essaie Code :
CREATE TABLE matable (id int PRIMARY KEY AUTO_INCREMENT, nom varchar(20) NOT NULL DEFAULT 'Non renseigné');
__________________
la culture c'est comme la confiture moins on en a plus on l'étale. Vous souhaitez contribuer aux rubriques Solutions d'entreprises ou BI, contactez-moi Mes tutos |
|
|
00
|
|
|
#3 | ||
|
Membre du Club
![]() Inscription : janvier 2007 Messages : 66 ![]() |
Bonjour,
le mot clé DEFAULT devrait convenir à ta situation: Code :
INSERT INTO matable(nom) VALUES (DEFAULT) Code :
|
||
|
|
00
|
|
|
#4 | ||||||
|
Nouveau Membre du Club
![]() |
Alors...
Code :
INSERT INTO matable VALUES ('', ''); => me retourne une nouvelle ligne avec nom vide INSERT INTO matable(nom) VALUES (''); => me retourne une nouvelle ligne avec nom vide INSERT INTO matable(nom) VALUES (null); => me retourne une erreur INSERT INTO matable() VALUES (); => me retourne une nouvelle ligne avec la valeur par défaut... Seulement c'est pas ce que je recherche... en effet mon but est que, dans une procédure stockée, faire un insert dans une table. Celle ci à des champs avec des valeurs par défaut si on les renseigne pas la requete serait du type : Code :
Code :
Ce qui me convient pas étant donné que j'ai mis les valeurs par défaut pour simplifier justement le traitement. je pourrais biensur tester mon champs mes paramètres dans ma procédure stockée via des IF et lancer des requêtes différentes si tel ou tel params avec des valeurs par défaut a été renseigné ou non. Mais si j'ai 20 champs, dont 8 en valeur par défaut non obligatoire, j vais avoir un paquer immense de IF et ca serait assez moche... Bref pour le moment ca marche pas Merci de votre aide et de ton aide. Shinn77 |
||||||
|
|
00
|
|
|
#5 |
![]() ![]() Inscription : juillet 2006 Messages : 2 662 ![]() |
DEFAULT à la place de ta valeur non renseignée ou tu veux mettre la valeur par defaut
__________________
la culture c'est comme la confiture moins on en a plus on l'étale. Vous souhaitez contribuer aux rubriques Solutions d'entreprises ou BI, contactez-moi Mes tutos |
|
|
00
|
|
|
#6 | ||
|
Nouveau Membre du Club
![]() |
Avec DEFAULT ca marche en revanche lors d'un insert ! merci ! :
Code :
INSERT INTO matable (nom) VALUES (DEFAULT); Code :
|
||
|
|
00
|
|
|
#7 |
![]() ![]() Inscription : juillet 2006 Messages : 2 662 ![]() |
La valeur par default n'est pas insérée à la création, il y a zero ligne c'est normal, cette valeur est utilisé uniquement si tu appelles la valeur par defaut dans un update ou insert.
__________________
la culture c'est comme la confiture moins on en a plus on l'étale. Vous souhaitez contribuer aux rubriques Solutions d'entreprises ou BI, contactez-moi Mes tutos |
|
|
00
|
|
|
#8 | ||
|
Nouveau Membre du Club
![]() |
Euh ok mais c'est le cas là non ?
Regarde ma procédure stockée lance un INSERT. Celui ci, en fonction de p_Nom vérifie si le champs est vide, si celui ci est vide, il le met en Null (NULLIF), ensuite via COALESCE, il vérifie si le contenu renvoyé par NULLIF est null, si c'est le cas, il renvoit DEFAULT sinon, il renvoit la valeur donné par p_Nom. En gros : Si p_Nom = '' Alors p_Nom = null (NULLIF) Si p_Nom = null Alors DEFAULT sinon p_Nom Donc si mon param p_Nom a été renseigné à vide (Call Proc_spI_AjouterRole ''), alors la requete exécuté par la procédure stockée sera : INSERT INTO Role (Nom) VALUES (DEFAULT); Voilà. Cependant, il n'accepte pas la valeur DEFAULT dans le COALESCE. Enfin je ne sais pas comment m'y prendre pour qu'il l'accepte. Mon but est le suivant : Si le paramètre a été renseigné, on insert le Role portant le nom qui a été renseigné. Sinon, on insert une nouvelle ligne avec comme nom le nom par défaut de la colonne de la table. Code :
|
||
|
|
00
|
|
|
#9 |
![]() ![]() Inscription : juillet 2006 Messages : 2 662 ![]() |
Je pense tout simplement que tu dois faire une mauvais utilisation de la fonction COALESCE je ne vois pas autre chose ...
__________________
la culture c'est comme la confiture moins on en a plus on l'étale. Vous souhaitez contribuer aux rubriques Solutions d'entreprises ou BI, contactez-moi Mes tutos |
|
|
00
|
|
|
#10 | ||
|
Nouveau Membre du Club
![]() |
Ah bon...
Pourtant si je remplace DEFAULT par une valeur style 'test' ca marche... Code :
Si je l'appelle comme ça : Il va m'ajouter une ligne avec comme nom 'test' (logique). |
||
|
|
00
|
|
|
#11 |
|
Nouveau Membre du Club
![]() |
Personne n'a d'idées ??
Merci d'avance, Shinn77 |
|
|
00
|
|
|
#12 | |||
|
Nouveau Membre du Club
![]() |
Okay, j'ai finalement trouvé !!
Fonction Default() S'il est vrai qu'avec Default cela ne marchait pas dans le COALESCE à l'intérieur d'une procédure, avec Default(column name) ça marche !! Code :
Ca m'ajoute bien une ligne avec comme Nom, ma valeur par défaut ! Merci à tous ! Je met le post en Résolu. Citation:
Shinn77, Till the End of Time |
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com