IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 PostgreSQL Discussion :

Valeur vide / NULL dans un champ de type numérique


Sujet :

PostgreSQL

  1. #1
    Candidat au Club
    Inscrit en
    Août 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Valeur vide / NULL dans un champ de type numérique
    Bonjour,

    J'aurais besoin de votre aide SVP.

    Nous avons une application PHP tournant sous MYSQL, et nous avons besoin d'utiliser PostgreSQL pour un client.

    le probleme est que lorsque nous insérons des chaines vides dans un champ de type numerique, nous obtenons une erreur.

    Je pense qu'il faudrait en fait utiliser NULL au lieu de la chaine vide .

    Cependant nous aimerions eviter d'avoir à recoder toutes les requetes de notre application, ma question c'est de savoir s'il est possible au niveau de la structure d'une table (ou ailleur) de faire en sorte que notre colonne de type numérique accepte les valeurs vides ? ou bien les convertissent en NULL ?


    J'ai regardé sur le forum, ainsi que sur google je n'ai pas trouvé grand chose.

    Dans la documentation j'ai vu qu'il est possible de définir ses propres types, est il possible par exemple de creer un type basé sur numerique et de faire en sorte qu'il accepte nos valeurs vides ?
    Si oui comment faire ? je n'ai trouvé de solution

    Merci

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Vouloir insérer une chaîne de caractères, fut-elle vide, dans une colonne de type numérique est une faute de conception / programmation !

    Je viens de tester sur MySQL 5.1.42 et l'omission de valeur ou la tentative d'insertion d'une chaîne vide dans une colonne de type entier non null entraîne la génération d'un warning et l'insertion automatique de la valeur 0.

    Peut-être que votre application fonctionne avec MySQL par ce phénomène et que Postgresql ne l'accepte pas, ce qui est tout à fait normal !

    Je me range du côté de la fiabilité des données et vous recommande de revoir votre application.

    En SQL, l'absence de valeur, c'est NULL ! Zéro a une signification qui peut entraîner des erreurs dans les calculs. Demandez à vos enfants ce qu'ils penseraient d'un système d'information qui mettrait la note 0 quand la note n'est pas connue (absence, devoir rendu en retard suite à absence...).
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Candidat au Club
    Inscrit en
    Août 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour

    l'application fonctionne parfaitement sous mysql, oracle et mssql.
    Je suis d'accord que le probleme est une erreur de conception.

    l'application est ancienne, elle a été concue au depart pour une vieille version de mysql et dans les version récentes une directive sql_mode permet de dire a mysql d'etre moins exigeant sur la validation des donneés, la doc dit meme que cela permet de meilleures performance si l'on est sur que l'application gere la validation des données de son coté. bref

    je voulais simplement savoir s'il existait une telle directive sous postgresql mais apparement non, j'ai posé la question sur plusieurs forums.

    Merci pour votre réponse, nous allons nous passer de postgresql pour le moment en attendant la correction du code dans une future version.

    Cordialement

    NB : je ne sais pas comment cloturer le sujet

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/04/2008, 16h23
  2. Réponses: 2
    Dernier message: 17/08/2007, 15h51
  3. insérer un 'NULL' dans un champ de type DATE
    Par 84mickael dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 01/06/2005, 09h23
  4. Mettre null dans un champ avec un domaine de valeur
    Par Kantizbak dans le forum SQL
    Réponses: 7
    Dernier message: 16/02/2005, 09h24
  5. Valeur par defaut 'True' dans un champ de type bit
    Par Mouse dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/03/2003, 15h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo