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 :

Ajouter une colonne calculée dans postgresql


Sujet :

PostgreSQL

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien SIG
    Inscrit en
    Avril 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Technicien SIG
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 8
    Par défaut Ajouter une colonne calculée dans postgresql
    Bonjour, je tente de modifier matable depuis pgAdmin pour ajouter un champ calculé.
    Ma requête est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ALTER TABLE matable
    ADD COLUMN col2 INTEGER GENERATED ALWAYS AS
       (CASE WHEN "col1" <>'' THEN TO_NUMBER("col1",'999999') END)
       STORED;
    Ça me renvoie :
    ERROR: l'expression de génération n'est pas immuable
    ERREUR: l'expression de génération n'est pas immuable État SQL : 42P17
    Je ne trouve pas l’erreur.
    Col1 est de TYPE character varying
    valeur possible:
    12587
    NULL
    365BIS
    Merci d’avance

  2. #2
    Membre Expert
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 952
    Par défaut
    Citation Envoyé par aknleo Voir le message
    Ça me renvoie :
    ERROR: l'expression de génération n'est pas immuable
    ERREUR: l'expression de génération n'est pas immuable État SQL : 42P17
    Je pense qu'il y a une erreur de traduction, le message d'erreur devrait parler de IMMUTABLE.

    Du coup, pas de solution car c'est bien une caractéristique de la fonction elle même : https://www.postgresql.org/docs/release/7.3.17/

  3. #3
    Membre Expert
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 952
    Par défaut
    pourquoi ne pas faire un trigger pour remplacer automatiquement '' par Null ?

  4. #4
    Membre Expert
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 952
    Par défaut
    Citation Envoyé par Michel.Priori Voir le message
    Je pense qu'il y a une erreur de traduction, le message d'erreur devrait parler de IMMUTABLE.
    Ben non, IMMUTABLE se traduit bien par IMMUABLE ; my bad

  5. #5
    Membre régulier
    Homme Profil pro
    Technicien SIG
    Inscrit en
    Avril 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Technicien SIG
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 8
    Par défaut
    j'ai fais un copie coller des messages d'erreurs

  6. #6
    Membre régulier
    Homme Profil pro
    Technicien SIG
    Inscrit en
    Avril 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Technicien SIG
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 8
    Par défaut
    Citation Envoyé par Michel.Priori Voir le message
    pourquoi ne pas faire un trigger pour remplacer automatiquement '' par Null ?
    j'ai replacé '' par null mais toujours le même message

  7. #7
    Membre Expert
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 952
    Par défaut
    Citation Envoyé par aknleo Voir le message
    j'ai replacé '' par null mais toujours le même message

    lequel ? celui qui parle de IMMUABLE lors de l'ajout de la colonne calculée ou celui de la rq SELECT (de l'autre post) ?

    L'idée est la suivante :
    • renommer la table (suffixe _norm pour normalisée ?)
    • créer une vue de la rq SELECT qui génère la col2, la vue au nom de la table
    • éventuellement il adjoindre un trigger "instead of" pour rendre la colonne col2 éditable (-> si col2 est modifié et que col1 est null, alors col1=col2, sinon ne rien faire)


    Note : pour moi col2 devrait porter un nom indiquant son caractère 'calculé', de manière à documenter sa nature automatique

  8. #8
    Membre Expert
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 952
    Par défaut
    Autre solution : modifier la table pour dissocier le n° (numérique) du suffixe (texte)

    https://guide-bonnes-pratiques.adres...on-des-numeros

  9. #9
    Membre régulier
    Homme Profil pro
    Technicien SIG
    Inscrit en
    Avril 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Technicien SIG
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 8
    Par défaut
    Citation Envoyé par Michel.Priori Voir le message
    Autre solution : modifier la table pour dissocier le n° (numérique) du suffixe (texte)

    https://guide-bonnes-pratiques.adres...on-des-numeros
    je ne vois pas le rapport avec cette page (https://guide-bonnes-pratiques.adres...on-des-numeros)

Discussions similaires

  1. Réponses: 11
    Dernier message: 06/11/2011, 21h17
  2. [OL-2007] Ajouter une colonne "NOTE" dans la boîte de réception
    Par michele2 dans le forum Outlook
    Réponses: 0
    Dernier message: 06/04/2011, 17h12
  3. Réponses: 3
    Dernier message: 03/01/2011, 15h38
  4. [SQL Server 2000] ajouter une colonne identité dans une vue?
    Par CetTer dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/08/2005, 13h43

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