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

Langage SQL Discussion :

Comment rendre une colonne NOT NULL


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 114
    Points : 70
    Points
    70
    Par défaut Comment rendre une colonne NOT NULL
    Bonjour,

    A partir d'une table dont un champs ne peut pas accepter de valeur null.
    Est-il possible de rendre ce champs comme acceptant des NULL dans une requête Select ?

    Je ne cherche pas à modifier le paramétrage de ma table, mais simplement d'autoriser temporairement le null (Je travaille sous Delphi, le résultat de la requête est chargé dans TSQLQuery, et je veux que le champs dans mon objet soit not required, je sais que je peux le faire avec l'objet, mais se serais plus simple pour moi de le faire dans la requete)

    Merci

  2. #2
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Bonjour,

    Si j'ai bien compris tu veux pouvoir afficher des nulldans une requête SQL. Si c'est bien ça tu n'auras aucun problèmes à le faire.

    Si non peux-tu nous mettre un exemple concret ?
    ~ Lola ~

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 114
    Points : 70
    Points
    70
    Par défaut
    Non pas du tout.

    Si j'utilise une requête qui récupère des colonnes NOT NULL à partir de la table suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE TABLE matable (
      id INTEGER NOT NULL
      ...)
    Après mise en mémoire dans un objet du résultat de la requete (dans un TSQLQuery dans mon cas).

    Le champ "id" de l'objet est également NOT NULL (SQLQuery.Fields[0].required à true).
    Ce qui je souhaite c'est que les champs de l'objet ne soit pas NOT NULL, afin que je puisse travailler librement avec mon objet. Je peux le faire directement dans l'objet (SQLQuery.Fields[0].required := false). Mais pour moi se serait plus simple si je pouvais le faire directement dans la requête

  4. #4
    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
    "id" est généralement le terme employé pour "identifiant" et est en principe la clé primaire de la table. Qu'un identifiant soit NOT NULL est tout à fait normal et ne doit pas être changé car une clé primaire est forcément NOT NULL.
    D'ailleurs, tout identifiant utilisé comme clé étrangère dans une autre table devrait aussi systématiquement être NOT NULL.

    La requête SELECT qui récupère les dientifiant va forcément récupérer des valeurs non nulles. C'est au programme, donc à ton objet, de se débrouiller avec cet identifiant non nul. Ou alors, change ta requête et ne récupère pas l'identifiant.

    Je pense que ton problème se situe plutôt au niveau de ton application. Une requête SELECT ne change pas les contraintes de la colonne d'une table. Tout au plus peux-tu changer le type de la valeur récupérée avec CAST.
    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 !

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 114
    Points : 70
    Points
    70
    Par défaut
    Le champ ID était un exemple, dans mon cas la requête est plus complexe avec des jointures sur d'autres tables.
    Pour résoudre mon problème, la solution c'est d'utiliser des LEFT JOIN dans ma requête (dans ce cas, les champs de la table jointure deviennent NULLABLE)

  6. #6
    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
    Si tu avais mieux expliqué ton cas concret au lieu d'une abstraction dès le départ, on t'aurait donné la solution tout de suite !
    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 !

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

Discussions similaires

  1. [phpMyAdmin] comment insérer une colonne not null dans une table ?
    Par Ragnart dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 12
    Dernier message: 31/05/2014, 21h00
  2. comment rendre une colonne d'une table temporaire nullabe ?
    Par jmclej dans le forum Développement
    Réponses: 1
    Dernier message: 22/03/2013, 17h23
  3. Comment rendre une colonne de datagridview editable?
    Par NoussaL dans le forum Windows Forms
    Réponses: 4
    Dernier message: 22/10/2008, 12h13
  4. [DB2/SQL] Passer une colonne de NULL à NOT NULL
    Par tux2005 dans le forum DB2
    Réponses: 6
    Dernier message: 08/06/2007, 22h57
  5. [ADO.NET] Comment rendre une certaine colonne "AutoIncrement" ?
    Par maitrebn dans le forum Accès aux données
    Réponses: 3
    Dernier message: 23/03/2005, 22h12

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